2011-05-31 15 views
10

Sıralama sınıfının bir örneğini oluşturan bir alan oluşturmaya çalışıyorum. Bu params[:ranking][:comment] setleri zaten bir yorum alanı vardır ama şimdi böyle bir şey görüntüleyen bir damla aşağı eklemek istiyorum:Rails form_for with collection_select

1: korkunç 2: yoksul 3: vasat 4: iyi, 5: Büyük

böyle bir şey yapabiliriz benim yaratmak yönteminde bir değere 1-5 böylece için: [skor]: [sıralaması]

Ben params ayarlamak için şu istiyoruz

benim formu şimdiki gibi görünüyor
@ranking = Ranking.new(#.... 
         :score => params[:ranking][:score]) 

:

<%= form_for([@essay, @ranking]) do |f| %> 
    <%= render 'shared/error_messages', :object => f.object %> 
    <div classs="field"> 
    <%= f.text_area :comment %> 
    </div> 
    <div classs="field"> 
     <%= #something here!%> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Submit" %> 
    </div> 
<% end %> 

collection_select'u kullanmam gerektiğini biliyorum, ancak çalışamadım.

cevap

47

sadece böyle bir şey için düzenli select yardımcı kullanmak mümkün olmalıdır: Eğer puanları için bir model olsaydı

f.select :score, [['horrible', 1], ['poor', 2], ['mediocre', 3], ['good', 4], ['great', 5]] 

Sen collection_select kullanabilirsiniz. Bir şey gibi:

f.collection_select :score_id, Score.all, :id, :name 

collection_select

API docs bakın