Вложенные модели, формы и date_select FormHelper интеграция - PullRequest
7 голосов
/ 26 января 2010

Я следовал учебнику Райана Бейтса на вложенных моделях. Некоторые из моих вложенных моделей имеют даты, связанные с ними. В моих миграциях они на самом деле типа «Дата».

Некоторые вещи, которые я пробовал, и проблемы, с которыми я столкнулся

  1. date_select - может обрабатывать префикс объекта формы, но не атрибуты вложенных моделей
  2. select_year - не работает с объектом формы
  3. обычный выбор, заполненный годом с использованием (Time.now.year - 100) .. (Time.now.year) и переопределением атрибута доступа attr start_date и end_date, чтобы получить значение в выборе для формирования даты и передавая это обратно. работает только при создании, а не при обновлении
  4. изменение типа данных поля на строку и использование обычного выбора, заполненного годом, с использованием (Time.now.year - 100) .. (Time.now.year) работает, но при редактировании , он не будет повторно заполнять выбор текущей информацией

Любые идеи или советы будут полезны.

Редактировать: before_save представляется более многообещающим, но по какой-то причине значение nil входит до сохранения, но видно в log dump.

Редактировать 2: Интересно, что эта проблема возникает только при «обновлении», а не при «создании».

Ответы [ 3 ]

3 голосов
/ 23 марта 2010

Это решение:

<% new_or_existing = task.new_record? ? 'new' : 'existing' %>
  <% prefix = "project[#{new_or_existing}_task_attributes][]" %>

<% fields_for prefix, task do |t| -%>
   <%= t.date_select(:start_date, :index => task.id || nil) %>
<% end -%>

Вот объяснение, почему это работает:

http://agilerails.wordpress.com/2009/03/11/date_select-time_select-doesnt-work-with-auto_prefix-object/

2 голосов
/ 26 января 2010

Я серьезно надеюсь, что это работает и для date_select:

http://jeffperrin.com/2009/06/04/rails-nested-forms-and-collection_select/

0 голосов
/ 03 апреля 2011

Может быть, это будет работать с драгоценным камнем ...

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