2011-05-31 120 views
10

我试图创建一个创建Ranking类的实例的字段。它已经注释字段,设置params[:ranking][:comment]但现在我想补充一点,显示类似的下拉:Rails form_for with collection_select

1:太可怕了,2:差,3:表现平平,4:好,5:伟大

我想这些对PARAMS设置[:排名] [:分数]的值1-5,这样在我的创建方法,我可以做这样的事情:

@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,但我一直无法使它工作。

回答

47

你应该只能够使用常规select助手类似的东西:

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

你会使用collection_select如果你有对分数模型。喜欢的东西:

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

见API文档collection_select