Как объект модели form_for с select_tag вкладывает свои параметры? - PullRequest
0 голосов
/ 15 февраля 2012

Когда я создаю объект с form_for и помещаю select_tag внутри него, я ожидаю, что выбранное значение перейдет в params в виде хэша внутри хеша модели, например, params[:model][:attribute1], поскольку это действительно базовыйформы с текстовыми полями вели себя для меня в прошлом.Дело не в этом:

<%= form_for(@vote, url: judgment_votes_path(@vote.judgment)) do |i| %>
<%= select_tag(:yayornay, options_for_select(%w[yes no undecided stand_aside])) %>
  <div class='actions'>
    <%= i.submit 'Save vote' %><br />
  </div>
<% end %>

Выше дает мне params[:yayornay].Запись Апидока на form_for мало что смогла рассеять мое замешательство.Есть ли простой способ структурировать мои select_tag параметры, такие как params[:vote][:yayornay], чтобы все было хорошо, как в старые времена?

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Вы используете помощник select_tag, который просто упрощает использование синтаксиса тега select. Проверьте помощники формы здесь: http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html для выбора тегов, которые соответствуют объекту (например: голосование в вашем случае). Вы можете использовать помощника select, например select (: voice,: yayornay, ...) или i.select (: yayornay, ...)

К вашему сведению, чаще используется «f» в качестве объекта формы, а не «i».

1 голос
/ 15 февраля 2012

В вашем случае вы можете ЛИБО использовать i.select следующим образом:

<%= i.select :yayornay, ... %>

ИЛИ использовать select_tag следующим образом:

<%= select_tag "vote[yayornay]", ... %>

Когда вы используете «i.select»,rails автоматически создает префикс «голосовать» за вас, поскольку вы используете объект формы для @vote.Если вы не хотите использовать «i.select», вы должны вручную указать имя элемента select, как указано выше.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...