2011-05-31 10 views
10

Intento crear un campo que cree una instancia de la clase Ranking. Tiene un campo de comentarios ya que establece el params[:ranking][:comment] pero ahora quiero añadir un abajo caída que muestra algo como:Rails form_for with collection_select

1: horrible, 2: pobre, 3: mediocre, 4: bueno, 5: gran

me gustaría éstos para establecer los params [: clasificación] [: puntuación] a un valor 1-5 por lo que en mi método de crear lo que puedo hacer algo como esto:

@ranking = Ranking.new(#.... 
         :score => params[:ranking][:score]) 

mi forma se parece a esto en este momento :

<%= 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 %> 

Sé que necesito usar el collection_select pero no he podido hacerlo funcionar.

Respuesta

47

Usted sólo debe ser capaz de utilizar el select ayudante regular para algo así:

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

que usaría collection_select si tuviera un modelo para las puntuaciones. Algo así como:

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

Consulte los documentos de la API para collection_select

Cuestiones relacionadas