2012-03-05 25 views
7

sto usandoAggiunta html in più attributi a un Rails collection_select

f.collection_select :country_id, Country.all, :id, :name) 

che genera

<select name="user[country_id]" id="user_country_id">  
<option value="1">Canada</option> 
<option value="2">United Kingdom</option> 
<option value="3" >United States</option> 
</select> 

Vorrei includere un prov-val e l'attributo di code-val al di selezione in modo da può aggiornare dinamicamente le etichette provincia:

<select name="user[country_id]" id="user_country_id">  
<option prov-val="Province/Territory" code-val="Postal Code" value="1">Canada</option> 
<option prov-val="County" code-val="Postcode" value="158">United Kingdom</option> 
<option prov-val="State" code-val="ZIP Code" value="2" >United States</option> 

È possibile utilizzare un insieme_selezione?

+0

possibile duplicato del [metodo collection_select helper Rails' e l'opzione 'Crea voce' alla fine] (http://stackoverflow.com/questions/699165/rails-collection-select-helper-method-and-the-create-item-option-at-the-end) –

+0

Scuse Ho presentato la domanda con un titolo errato perché ho usato la domanda sopra come modello. – patrickandroid

risposta

10

Non sono sicuro se è possibile utilizzare collection_select, ma penso che usando select fa ciò che si vuole:

<%= f.select :country_id, Country.all.map {|c| [c.name, c.id, {:'prov-val' => c.prov_val, :'code-val' => c.code_val}]} %> 

Questo presuppone che l'oggetto paese ha il prov_val e campi code_val.

+0

Grazie ho funzionato aggiungendo un helper options_for_select_with_attributes da: http://railsforum.com/viewtopic.php?id=38624 <% = f.select: country_id, options_for_select_with_attributes (Country.all.map {| c | [c .name, c.id, {: 'prov-val' => c.prov_val,: 'code-val' => c.code_val}]})%> – patrickandroid

3

Non si dovrebbe chiamare il modello direttamente dalla vista.

E 'meglio utilizzare una variabile di istanza, invece:

<%= f.select :country_id, @countries.map {|c| 
    [c.name, c.id, {:'prov-val' => c.prov_val, :'code-val' => c.code_val}] 
} %> 
Problemi correlati