Rails + Ransack - 下拉列表集合?

Ata*_*600 17 ruby-on-rails ransack

我喜欢hansack gem的灵活性,但是我无法让标准的collection_select正常运行.也许有人可以提供帮助

例:

      <%= collection_select(:expense, :project_id, Project.all, 
        :id, :name, { prompt: 'Select Project'}, { class: 'span4' }) %>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,此代码来自费用输入屏幕,因此第一个参数是费用对象.在搜索形式中它应该是什么?另外,我知道我需要在那里获得后缀.在这个例子中,我想将project_id_eq作为搜索模式.

此外,我的表单在控制器和视图"报告",我不是将此搜索放在默认控制器中.

谢谢!

Ata*_*600 33

似乎这会起作用.

<%= f.select :project_id_eq, options_from_collection_for_select(Project.all, "id", "name", @search.project_id_eq) %>
Run Code Online (Sandbox Code Playgroud)

如果有人有其他建议,也很想知道.

  • @dspencer只需将`include_blank:true`放在括号外:`<%= f.select:languages_name_eq,options_from_collection_for_select(Language.all,"id","name"),include_blank:true%>` (3认同)

big*_*ato 17

要使用include_blank执行此操作,请将其放在括号外:

例如:

<%= f.select :languages_id_eq, options_from_collection_for_select(Language.all, "id", "name"), include_blank: true %>

==更新==

更好的是,使用f.collection_select.这样,在用户使用下拉列表搜索某些内容后,该选项将在以下页面中预选:

<%= form.collection_select :vendor_id_eq, Vendor.all, :id, :name, include_blank: true %>
Run Code Online (Sandbox Code Playgroud)