2009-05-05 2 views

Répondre

48

Tout comme Schrockwell a dit:

Hash.each |a| retourne un tableau de la forme a = [key, value], donc pour le hachage @status_fields vous pouvez écrire:

<%= collection_select('thing', 'status', @status_fields, :first, :last) %> 

Sinon, si vous souhaitez la clé pour apparaître dans la liste de sélection et le point de la valeur à la valeur de liste de sélection, puis:

<%= collection_select('thing', 'status', @status_fields, :last, :first) %> 

Cela permet de sélectionner l'option donnée par thing.status ou rien si nul est retourné

Si vous voulez simplement créer une sélection non liée à un objet utiliser

<%= select_tag('name', options_from_collection_for_select(@status_fields, :first, :last, '2')) %> 

où « 2 » est l'indice de la sélection souhaitée

PS: Je n'ai pas assez de réputation pour juste modifier le message original ou le commenter

+2

ou utilisez <% = select_tag ('name', options_for_select ([["Dollar", "$"], ["Kroner", "DKK"]])%> – montrealmike

7

Le select helper method acceptera un hachage sous la forme { text_displayed_in_select => select_value }, donc vous voudrez probablement invert ce hachage.


8

vous pourriez faire quelque chose comme

select "foo", "bar", @hash_object 

ou

select "foo", "bar", @hash_object.map { |h| [h.key, h.value] } 

je serais probablement inverser votre hachage premier à faire le point clé de la valeur

4

Hash.each |a| renvoie une tableau de la forme a = [key, value], donc pour le hachage @status_fields vous pouvez écrire:

<%= collection_select('thing', 'status', @status_fields, :first, :last) %> 

Sinon, si vous souhaitez la clé pour apparaître dans la liste de sélection et le point de la valeur à la valeur de liste de sélection, puis:

<%= collection_select('thing', 'status', @status_fields, :last, :first) %> 
+0

Alors, comment puis-je alors dire la valeur sélectionnée - cela ne semble pas le ramasser. –

+0

La documentation indique que "La valeur renvoyée par la méthode d'appel sur l'objet d'instance sera sélectionnée." Donc, au lieu de passer 'thing' comme premier argument, essayez de passer l'instance réelle de l'objet @thing. – Schrockwell

Questions connexes