我在Rails 3.2.11应用程序中使用Ransack并且喜欢它。我目前正在搜索与特定高中相匹配的个人资料:
<%= f.check_box :profile_high_school_cont, {}, "#{current_user.profile.high_school}", '' %>
但是,我想为此添加一些额外的逻辑,并进一步优化搜索到个人资料,允许其他用户在高中找到它们。
所以我想知道是否有办法添加检查配置文件:show_high_school是否为真,以及配置文件的:high_school是否包含某些文本。
在探讨之后(特别是here和here),我尝试了以下自定义搜索者:
ransacker :by_high_school,
:formatter => proc {
|high_school| Profile.where(:high_school => high_school, :show_high_school => true)
} do |parent|
parent.table[:user]
end
我将这两者都添加到User模型(has_one配置文件)和Profile模型(属于User)。在每种情况下我都会收到错误:
undefined method `gsub' for []:ActiveRecord::Relation
在Profile.rb中定义时,我收到以下错误:
User.search(:profile_by_high_school_cont => "Cent").result
我的数据库是PostgreSQL