Не могу передать переменную используя select_tag - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть форма в Rails, мне нужно создать тег опции в HTML. Это довольно простой список опций со статическими значениями. Я мог бы создать его в HTML достаточно легко, но я хочу сделать это "Rails Way"

Вот часть моей формы:

<div class="field">
    <%= f.label :first_name %><br />
    <%= f.text_field :first_name %>
   </div>
   <div class="field">
    <%= f.label :last_name %><br />
    <%= f.text_field :last_name %>
   </div>
   <div class="field">
    <%= f.label :email %><br />
    <%= f.text_field :email %>
   </div>
   <div class="field">
    <%= f.label :phone %><br />
    <%= f.text_field :phone %>
   </div>
   <div class="field">
    <%= f.label :area %><br />
        <%= select_tag "area", options_for_select([["Northeast", "NE"], ["Southeast", "SE"], ["Central", "CE"], ["West", "WE"], ]) %>

   </div>
   <div class="actions">
    <%= f.submit %>
   </div>

Когда я использую select_tag, моя форма показывает, что он успешно публикует изменения, но значение, переданное select_tag, не обновляется в базе данных. Я убедился, что простое текстовое поле ДОЛЖНО передавать значение.

Я уверен, что упускаю что-то очень простое, но мне трудно это определить. Пожалуйста помоги. Спасибо!

Рельсы Новичка

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

Проверьте ваш рендеринг: голый select_tag будет отображать "area" в качестве имени / идентификатора, тогда как все остальное в вашей форме будет иметь обычное основанное на модели имя.

Например, если модель была "user", имя поля телефона будет "user[phone]".

Это можно увидеть, посмотрев параметры, переданные действию в журнале.

Либо воспользуйтесь помощником формы, либо назовите его правильно так же, как и другие поля.

См. Также: select , select_tag , select (не полезно) и помощники по формам . Раздел «Общие сведения об именах параметров» также может представлять интерес.

0 голосов
/ 24 декабря 2011

select_tag похоже на text_field_tag: оно не взаимодействует с конструктором форм (объект form_for дает) для получения правильного имени параметра и текущего значения.

select helper очень немного отличается от select_tag в том, что он вызывает опции для выбора для вас, поэтому вам нужно всего лишь написать

f.select 'area', [["Notheast", "NE"], ...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...