2009-05-05 10 views

cevap

48

Sadece Schrockwell olarak söyledi: karma @status_fields için yazabilir böylece

Hash.each |a|, formun a = [key, value] dizisi döndürür:

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

dilerseniz, daha sonra, seçilen listenin basıp liste değerine değer noktasında gösterilmesini anahtarı isterseniz:

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

Bu thing.status veya hiçbir şey tarafından verilen seçeneği seçecektir nil

sadece '2' istenen seçimin endeksi ise

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

kullanmak bir nesneye bağlı olmayan herhangi bir seçim oluşturmak istiyorsanız

döndürülür eğer

Not: Sadece orijinal gönderiyi veya yorumunu değiştirmek için yeterli bir itibarım yok

+2

veya <% = select_tag ('name', options_for_select ([["Dollar", "$"], ["Kroner", "DKK"]])%> kullanın – montrealmike

7

select helper method{ text_displayed_in_select => select_value } formundaki bir karmayı kabul edecektir, bu nedenle muhtemelen invert hash değerini isteyeceksiniz.


8

Eğer

select "foo", "bar", @hash_object 

veya

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

gibi bir şey yapabileceğini ben muhtemelen

4

Hash.each |a| bir döndüren değere anahtar noktayı öncelikle karma ters ediyorum a = [key, value] formunun dizisi, yanikarma içinyazabilirsiniz:

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

Alternatif olarak, seçilen liste değerine Seçim listesinde göstermek için anahtar ve değer noktasını isterseniz, o zaman:

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

Öyleyse, nasıl seçili değeri anlatırdım - bu onu almak için görünmüyor. –

+0

Belgeler, "Örnek nesnedeki çağrı yönteminden döndürülen değer seçilecektir." Yani, 'şey' ilk argüman olarak geçmek yerine, object @thing'in asıl örneğini geçmeyi deneyin. – Schrockwell