Rails的collection_select自定义名称属性

问题描述:

我有以下集合选择其中充当Rails应用程序中的过滤器。Rails的collection_select自定义名称属性

<%= form_tag("/appointments", :method => "get", :id => "filter_form") do %> 
    <%= collection_select :doctor, :id, @doctors, :id, :full_name, {:include_blank => 'All'} %> 
<% end %> 

这总是产生像name="doctor[id]"选择元件,这导致在浏览器中?utf8=✓&doctor%5Bid%5D=1,这是不太可读的名称属性。

如何将名称属性更改为name = "doctor"或基本上只是从中删除括号?

你试过:

<%= form_tag("/appointments", :method => "get", :id => "filter_form") do %> 
    <%= collection_select :doctor, :id, @doctors, :id, :full_name, {:include_blank => 'All', :name => 'doctor'} %> 
<% end %> 
+0

是的,我想这一点,但它并没有帮助。实际上,我甚至无法理解为什么在创建选择标签时需要前两个参数。不过,我正在寻找一个Rails解决方案,但我通过使用jQuery在表单提交之前手动更改名称来解决此问题。感谢您的回答@n_i_c_k – interboy 2013-05-02 03:22:56

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select

的collection_select方法中包含的参数 “选项” 和 “html_options”。 “选项”允许您添加特定信息,如{:include_blank => 'All'},但不会替换html属性。

你必须名称添加到下一个哈希值,像这样:

<%= form_tag("/appointments", :method => "get", :id => "filter_form") do %> 
    <%= collection_select :doctor, :id, @doctors, :id, :full_name, {:include_blank => 'All'}, {:name => 'doctor'} %> 
<% end %> 
+0

OP,这是正确的答案 – zgohr 2013-12-18 18:28:12