2013-05-02 15 views
5

Mam następującą kolekcję wybierz, który działa jako filtr w aplikacji Rails.Rails collection_select niestandardowa nazwa atrybutu

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

to zawsze generuje atrybut name elementu select jak name="doctor[id]" co skutkuje w przeglądarce aby ?utf8=✓&doctor%5Bid%5D=1, co nie jest dość czytelny.

Jak zmienić atrybut nazwy na name = "doctor" lub po prostu usunąć z niego nawiasy?

Odpowiedz

0

Czy próbowałeś:

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

Tak, próbowałem tego, ale to nie pomogło. Właściwie nie mogę zrozumieć, dlaczego pierwsze dwa parametry są potrzebne do utworzenia znacznika select. Jednak szukałem rozwiązania Rails, ale rozwiązałem je, używając jQuery do ręcznej zmiany nazwy przed przesłaniem formularza. Dziękujemy za odpowiedź @ n_i_c_k – interboy

6

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

Sposób collection_select zawiera parametry "Opcje" i "html_options". "opcje" pozwalają dodawać określone informacje, takie jak {:include_blank => 'All'}, ale nie zastępują atrybutów html.

Trzeba dodać nazwę do następnego hash, tak:

<%= 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, to jest poprawna odpowiedź – zgohr

Powiązane problemy