2013-05-02 99 views
5

我有以下集合選擇其中充當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"或基本上只是從中刪除括號?

回答

0

你試過:

<%= 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

6

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