저는 두 모델이 있습니다 : company
및 location
입니다. company
에는 많은 locations
이 있습니다.
나는 매우 흥미로운 Ryan Bates' Named Routes을 발견했다.
그래서 각 모델에 대한 리소스를 routes.rb
에 추가했습니다.명명 된 경로를 사용하여 Rails에서 목록 동작을 필터링하는 방법은 무엇입니까?
resources :companies
resources :locations
이것은 http://localhost:3000/companies
결과 <%= link_to "Companies", companies_path %>
같은 이름 경로에 따라 링크를 생성 할 날 수 있습니다.
이제는 속한 company
을 기준으로 locations
의 목록을 필터링하고 싶습니다. 명명 된 경로로 작업하기 전에 다음과 같은 링크를 추가하여이 작업을 완료했습니다.
<%= link_to "Locations for this company", { :controller => 'locations', :action => 'list', :company_id => company.id } %>
여기서 I는
list
액션 위치를 필터링하는
LocationsController
company_id
로 전달한다.
def list
@locations = Location.order("locations.id ASC").where(:company_id => @company.try(:id))
end
작동! 하지만, 필자는'locations_path'를 가리키는 또 다른 필터링되지 않은 링크를 가지고 있습니다. '위치'가 표시되지 않습니다. 이것은 내가 컨트롤러에서 정의한 것에 기인합니다. 위치 컨트롤러의'list' 액션을 사용하여 필터링 된 결과와 필터링되지 않은 결과를 모두 어떻게 보장 할 수 있습니까? – JJD
세 번째 제안을 추가했습니다. – nessur
고맙습니다. 회사와 관련된 새로운 위치를 만들고 싶기 때문에 첫 번째 선택을 유지합니다. 나는 new_company_location_path를 사용하여 연결을 유지한다. – JJD