В моем приложении 2 таблицы: 1. Пользователи, 2. Рестораны. Пользователь может сохранить названия (вместе с другими атрибутами) ресторанов, в которых он был. Например, пользователь 1 был в Panda Express и Red Robins. Эти записи ресторана также имеют «категорию продуктов питания» как атрибут своей записи. Когда другой пользователь (пользователь 2) попадает на страницу профиля пользователя 1, появляется столбец, в котором перечислены различные категории ресторанных продуктов для пользователя 1 (например, американский и китайский).
Что я хочу сделать, так это разрешить пользователю 2 нажимать на категории продуктов, чтобы фильтровать и отображать только те рестораны, в которых нажата категория. (вместо того, чтобы показывать все рестораны, если пользователь нажимает 2 на китайском, отображается только Panda Express.)
как передать параметр категории продуктов в модель ресторана для фильтрации результатов?
-
Users table: user_id | name | email
1 | Bob | bobby@email.com
2 | Alice | alice@email.com
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 в модели Restaurants, но я не уверен, как перейти к передаче категории продуктов в модель.