Подтвердить что ты не робот

Rails form_for with collection_select

Я пытаюсь создать поле, которое создает экземпляр класса Ranking. Он уже имеет поле комментариев, которое устанавливает params[:ranking][:comment], но теперь я хочу добавить выпадающее меню, которое отображает что-то вроде:

1: ужасный, 2: бедный, 3: посредственный, 4: хороший, 5: большой

Я бы хотел, чтобы они задавали params [: ranking] [: score] значение 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, но я не смог заставить его работать.

4b9b3361

Ответ 1

Вы можете просто использовать обычный помощник 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