내 앱에 2 개의 테이블이 있습니다. 사용자, 2. 레스토랑. 사용자는 그들이 본 레스토랑의 이름 (다른 속성과 함께)을 저장할 수 있습니다. 예를 들어 사용자 1은 Panda express와 Red Robins에갔습니다. 이 레스토랑 기록에는 기록의 속성으로 "음식 카테고리"가 있습니다. 다른 사용자 (사용자 2)가 사용자 1의 프로필 페이지에 올랐을 때 사용자 1 (예 : 미국인과 중국인)의 다양한 음식 카테고리를 나열하는 열이 있습니다.레일에 특정 속성을 포함하는 모든 레코드 찾기
내가 원하는 것은 사용자 2가 클릭 한 카테고리 아래의 레스토랑 만 필터링하고 표시하기 위해 음식 카테고리를 클릭 할 수있게하려는 것입니다. (모든 레스토랑을 표시하는 대신 사용자 2가 중국어를 클릭하면 팬더 익스프레스 만 표시됩니다.)
결과를 필터링하려면 음식 카테고리 매개 변수를 레스토랑 모델에 전달하려면 어떻게해야합니까?
-
Users table: user_id | name | email
1 | Bob | [email protected]
2 | Alice | [email protected]
Users restaurants table: users_restaurants_id | food_category | user_id
1 | Chinese | 1
2 | American | 1
Restaurants Table: restaurant_id | name | food_category | user_id
1 | Panda Express | Chinese | 1
2 | Red Robins | American | 1
-
Users Show view
<%= for each @restaurants do |r| %>
<%= link_to r.name, url => { :controller => users, :action => show, :xxx => r.id }
<% end %>
Users controller
def show
@user = User.find(params[:id])
whichfoodcategory => params(:xxx)
unless whichfoodcategory.nil?
#just render all restaurants for all food categories
@restaurants = @user.restaurants
else
#use the params(:xxx) to filter the restaurants model records for @user... but how?
@restaurants = @user.filteredbyfoodcategory
end
end
Restaurants Model
attr_accessor :xxx(?) or :whichfoodcategory(?)
named_scope :filteredbyfoodcategory { select all where user_id = 1 and food_category = :whichfoodcategory? or xxx? }
-
나는 내가 레스토랑 모델에서 named_scope을 사용해야 확신 해요,하지만 난 방법을 잘 모르겠어요 모델에 음식 카테고리를 전달하십시오.