0

내 앱에 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을 사용해야 확신 해요,하지만 난 방법을 잘 모르겠어요 모델에 음식 카테고리를 전달하십시오.

답변

1

기존 설정으로 모든 레스토랑을로드하는 방법은 다음과 같습니다. 당신이 named_scopes에이를 변경하려면

@restaurants = @user.restaurants.all(:conditions => ["restaurants.food_category = ?", params[:xxx]]) 

다음과 같은 아마 뭔가 일할 수 : 컨트롤러에서

class Restaurant < ActiveRecord::Base 
    ... 
    named_scope :by_food_category, lambda { |category| { :conditions => ["restaurants.food_category = ?", category] } } 
end 

다음을 :

@restaurants = @user.restaurants.by_food_category(params[:xxx]) 
관련 문제