Ransack with collection_select

时间:2013-12-17 17:58:14

标签: ruby-on-rails ransack

下午,

我发现Ransack有点混乱。我正在尝试使用可用值填充我的下拉列表并根据该值过滤索引但是当我尝试使用各种选项时,它会将所有信息提取到下拉列表中,包括重复项。

如何创建此表单,以便仅显示可用内容并根据该表单进行搜索。

jobs_controller.rb

 def index
    @jobs = Job.all
    @show_sub_nav = true
    @q = Job.search(params[:q])
    @searches = @q.result(distinct: true)
    @lang = Job.find_by_sql("SELECT languages FROM jobs GROUP BY languages").map &:languages
end

_subnav.html.erb

  <%= search_form_for @q do |f| %>
     <%= f.select "languages", options_for_select(@lang) %>
    <%= f.submit %>
  <% end %>

我目前收到此错误:

  

没有有效的语言谓词

感谢您的帮助,我在尝试理解collection_select和这些form_helpers时遇到了麻烦,因为我没有发现API文档非常有用,所以任何链接都是有用的。

1 个答案:

答案 0 :(得分:4)

在Ransack中,您需要在字段名称上添加谓词。如果您想要与所选的选项完全匹配,您可以执行以下操作:

<%= f.select :language_eq, @lang %>

有关谓词的更多信息,请参阅Basic Searching页面。有关其他信息,请参见RailsCast 370