你可以做這樣的:
原理
如果選項將是您的應用內容的主要決勝局,你可能要圍繞設計 模型
要做到這一點,你會讓你的root
聯盟控制器,然後顯示數據基於該的相關內容
IE,而不是Team.joins(:league).where(league: "x")
,你會怎麼做:
#Leagues
league = League.find(x)
league.matches
這意味着你可以直接從數據庫中加載的聯賽,使得它更簡單的用戶
嵌套資源
的備選方案T o這是使用Michael Szyndel在他的評論中推薦的nested resources方法。這將使所以你要訪問的網址如下:
domain.com/leagues/1/matches/2/teams/1
這樣做的好處是可以幹起來你的代碼,但它會增加許多額外的水平,以你的系統,你可能不想。我給什麼想看看我下面的概述:
代碼
#config/routes.rb
root to: "leagues#index"
#app/controllers/leagues_controller.rb
def index
league = params[:league] ? params[:league] : "0"
@league = League.find(league)
end
#app/views/league/index.html.erb
<%= form_tag('/') do %>
<%= select_tag 'league', options_for_select(League.all.collect {|u| [u.name, u.id] }) %>
<% end %>
<% @league.matches.each do |match| %>
<%= "#{match.team_1.name} vs #{match.team_2.name} : #{match.created_at}" %>
<% end %>
這將需要重新分解&擴展到包括比賽的細節,使「聯盟「會議變量等,但由於問題可能會被關閉,我想我會給你一些想法
底線是,它取決於你想要的應用程序的功能
這個問題過於寬泛,無法用這種形式回答,但您可能想了解[嵌套資源](http://guides.rubyonrails.org/routing.html#nested-resources) –
但嵌套資源僅適用於顯示/ league/id/matches之類的東西,我的意思是我想點擊比賽鏈接,然後它應該只顯示給定聯賽的比賽。我正在考慮像'before_filter'這樣的東西,它適用於我所做的每個查詢。 –
爲了有規範的網址,你應該真的避免「魔術」,並直接在url中指定聯盟。 –