Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在rails中查找包含特定属性的所有记录_Ruby On Rails_Lambda_Filtering_Parameter Passing_Named Scope - Fatal编程技术网

Ruby on rails 在rails中查找包含特定属性的所有记录

Ruby on rails 在rails中查找包含特定属性的所有记录,ruby-on-rails,lambda,filtering,parameter-passing,named-scope,Ruby On Rails,Lambda,Filtering,Parameter Passing,Named Scope,我的应用程序1中有2个表。用户,2。餐厅。用户可以保存他们去过的餐厅的名称(以及其他属性)。例如,用户1已经访问了熊猫快车和红知更鸟。这些餐厅记录也有一个“食品类别”作为其记录的属性。当另一个用户(用户2)登录到用户1的个人资料页面时,会有一列列出用户1的不同餐厅食品类别(例如美国和中国) 我想做的是允许用户2点击食物类别,过滤并只显示点击类别下的餐馆。(如果用户2次点击中文,则只显示熊猫快车,而不是显示所有餐厅。) 如何将食品类别参数传递到餐厅模型以过滤结果 -- -- 用户显示视图 {:co

我的应用程序1中有2个表。用户,2。餐厅。用户可以保存他们去过的餐厅的名称(以及其他属性)。例如,用户1已经访问了熊猫快车和红知更鸟。这些餐厅记录也有一个“食品类别”作为其记录的属性。当另一个用户(用户2)登录到用户1的个人资料页面时,会有一列列出用户1的不同餐厅食品类别(例如美国和中国)

我想做的是允许用户2点击食物类别,过滤并只显示点击类别下的餐馆。(如果用户2次点击中文,则只显示熊猫快车,而不是显示所有餐厅。)

如何将食品类别参数传递到餐厅模型以过滤结果

--

--

用户显示视图
{:controller=>users,:action=>show,:xxx=>r.id}
用户控制器
def秀
@user=user.find(参数[:id])
whichfoodcategory=>params(:xxx)
除非是哪个食品类别。零?
#只需渲染所有食品类别的所有餐厅
@餐厅=@user.restaurants
其他的
#使用参数(:xxx)筛选@user的餐厅模型记录。。。但是怎么做呢?
@餐厅=@user.filteredbyfoodcategory
结束
结束
餐饮模式
属性访问器:xxx(?)或:哪个商品类别(?)
命名的\u范围:filteredbyfoodcategory{选择所有用户\u id=1和食品\u类别=:哪个食品类别?或xxx?}
--


我肯定我应该在餐馆模型中使用命名范围,但我不确定如何将食品类别传递给模型

以下是仅使用现有设置加载所有餐厅的方法

@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.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])