鑑於我有兩種型號:company
和location
。 A company
有許多locations
。
我發現Ryan Bates' Named Routes很有意思。
因此,我在routes.rb
中爲我的每個模型添加了資源。如何使用命名路由過濾Rails中的列表動作?
resources :companies
resources :locations
這使我產生基於像<%= link_to "Companies", companies_path %>
導致http://localhost:3000/companies
命名路由鏈接。
現在我想根據他們所屬的company
過濾locations
的列表。在使用命名路線之前,我通過添加如下鏈接來完成此任務。
<%= link_to "Locations for this company", { :controller => 'locations', :action => 'list', :company_id => company.id } %>
這裏我通過company_id
到過濾器在其list
動作的位置LocationsController
。
def list
@locations = Location.order("locations.id ASC").where(:company_id => @company.try(:id))
end
工程!雖然,我有另一個指向'locations_path'的未經過濾的鏈接。它不顯示任何「位置」。這是我在控制器中定義的。我如何確保使用位置控制器的'list'動作來過濾和未過濾的結果? – JJD 2011-03-23 18:34:47
添加了第三條建議。 – nessur 2011-03-28 20:12:32
謝謝。我留在我的第一選擇,因爲我也想創建與公司相關的新地點。我使用'new_company_location_path'來保持關聯。 – JJD 2011-03-28 22:28:37