Рельсы form_for выберите без свойства

Я пытаюсь создать список выбора с помощью form_for helper:

<%= bootstrap_form_for(@lesson) do |f| %>
 <%= f.hidden_field('course_id', :value => @course.id) %>
 <%= f.select(:start_time, days_of_week_options_for_select) %>
 <%= f.text_field('starting_on', :value => Date.today.to_s(:short)) %>
 <%= f.text_field('ending_on', :value => "5 June") %>
<% end %>

(Я использую самородку bootstrap_form, чтобы сделать вещи красивыми, но это не влияет на проблему, поскольку form_for для bootstrap_form_for ничего не меняет.)

Кажется, что символ :start_time above должен быть свойством Lesson, но я бы предпочел, чтобы это не было так, поскольку поле используется только во время создания нового урока, но не является частью модели Lesson.

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

Я что-то пропустил в картине большего размера? Или мне нужно изучить новый синтаксис?

2 ответа

Самый простой способ - использовать attr_accessor для вашей модели. Это не будет сохраняться в DB/storage, но создает временный атрибут, который вы можете использовать для хранения информации.

attr_accessor :start_time


Самый простой способ - просто избегать использования помощников объекта формы:

<%= form_for(@lesson) do |f| %> <%= f.hidden_field('course_id', :value => @course.id) %> <%= select_tag(:start_time, days_of_week_options_for_select) %> <%=... %> <% end %>

После того, как вы получите форму для компиляции, вы можете посмотреть выходные данные ваших идентификаторов и имен ввода и назвать тег select одинаково, тогда он будет работать так же, как и ваши другие элементы формы.

См. Это для документации: http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-select_tag

licensed under cc by-sa 3.0 with attribution.