Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 未定义的方法<;变量>_continspree-rubyonrails_Ruby On Rails_Ruby_Ruby On Rails 4_Search_Spree - Fatal编程技术网

Ruby on rails 未定义的方法<;变量>_continspree-rubyonrails

Ruby on rails 未定义的方法<;变量>_continspree-rubyonrails,ruby-on-rails,ruby,ruby-on-rails-4,search,spree,Ruby On Rails,Ruby,Ruby On Rails 4,Search,Spree,我正在尝试在spree后端的评论列表页面中进行搜索。 但是我得到了字段的未定义方法错误。例如:未定义的方法title\u cont',未定义的方法review\u cont' 在此,我发布我的控制器: 审查\u controller.rb class Spree::Admin::Reviews控制器:批准? 销毁后:重新计算产品等级 验证:名称,状态:true 验证:审阅,显示:true 验证:额定值,数值性:{only_integer:true, 大于或等于:1, 小于或等于:5, 消息:Sp

我正在尝试在spree后端的评论列表页面中进行搜索。 但是我得到了字段的未定义方法错误。例如:未定义的方法
title\u cont',未定义的方法
review\u cont'

在此,我发布我的控制器:

审查\u controller.rb

class Spree::Admin::Reviews控制器
模型文件:review.rb

class Spree::ReviewSpree.user\u class.to\u s
有很多:反馈和评论
保存后:重新计算产品评级,:如果=>:批准?
销毁后:重新计算产品等级
验证:名称,状态:true
验证:审阅,显示:true
验证:额定值,数值性:{only_integer:true,
大于或等于:1,
小于或等于:5,
消息:Spree.t('you\u必须\u输入\u值\u用于\u评级'))
默认范围{顺序(“spree_reviews.created_at DESC”)}
范围:本地化,->(lc){where('spree_reviews.locale=?',lc)}
范围:最新最早,->{order('spree\u reviews.created\u at DESC')}
范围:最早的\u优先,->{reorder('spree\u reviews.created\u at ASC')}
范围:预览,->{limit(Spree::Reviews::Config[:预览大小])。最早的\u first}
范围:已批准,->{where(已批准:true)}
范围:未批准,->{where(批准:false)}
范围:默认的审批过滤器,->{Spree::Reviews::Config[:包括未审批的审批]?全部:已审批的}
def反馈_星
如果反馈_.size,则返回0

25%>
25,:value=>“”%>


当我使用上面提到的变量时,没有定义。请帮我解决这个问题。

@cliffs-要使用ransack gem进行搜索,您首先必须将所有要执行搜索的字段列为白名单。因此,如果您是从
Spree::Base
-

self.whitelisted\u ransackable\u属性=%w[标题,评论]

否则,如果您从
ActiveRecord::Base
继承它,则必须将
ransackable\u属性定义为类方法

def self.ransackable_attributes(auth_object = nil)
    ['title','review','user']
end
现在尝试使用
搜索


希望这对您有所帮助。

@cliffs-要使用ransack gem进行搜索,您首先必须将所有要执行搜索的字段列为白名单。因此,如果您是从
Spree::Base
-

self.whitelisted\u ransackable\u属性=%w[标题,评论]

否则,如果您从
ActiveRecord::Base
继承它,则必须将
ransackable\u属性定义为类方法

def self.ransackable_attributes(auth_object = nil)
    ['title','review','user']
end
现在尝试使用
搜索


希望这对您有所帮助。

问题已经解决

在关联模型
Review.rb
中为该模型的自定义可搜索属性定义了ransackable_attributes方法

def self.ransackable_attributes(auth_object = nil)
    ['title','review','user']
end

问题解决了

在关联模型
Review.rb
中为该模型的自定义可搜索属性定义了ransackable_attributes方法

def self.ransackable_attributes(auth_object = nil)
    ['title','review','user']
end

我已尝试在review.rb(model)文件中添加上述内容。但它会导致错误“没有将true隐式转换为数组”。通过在模型中定义ranksackable方法解决了此问题。感谢您的支持。糟糕,我没有注意到您是从ActiveRecord::Base继承的,而不是从Spree::Base更新了我的回答。我已尝试在review.rb(model)文件中添加上述内容。但它会导致错误“没有将true隐式转换为数组”。通过在模型中定义ranksackable方法解决了此问题。感谢您的支持。糟糕,我没有注意到您是从ActiveRecord::Base继承的,而不是从Spree::Base更新了我的答案
def self.ransackable_attributes(auth_object = nil)
    ['title','review','user']
end