Как добавить дополнительные поля формы за пределы блока объявления формы

Основная цель: Разрешить плагинам, гемам добавлять дополнительные поля формы в предопределенные формы.

Например, в приложении есть форма для входа в систему:

 <% = form_for (resource,: as => resource_name, ...) do | f | %>
 <% = devise_error_messages! %>
 ...<% end%> 

Отдел маркетинга хочет начать кампанию на следующие 2 дня (например, зарегистрируйтесь с помощью промокода и получите X бонусных баллов). Поэтому нам нужно добавить дополнительное поле промокода во ВСЕ наши регистрационные формы.

Есть ли способ добавить в форму дополнительное поле из моего плагина rails-plugin / railtie и определить метод обратного вызова on_submit (для выполнения действий с данными моего дополнительного поля)?

Преимущества :

  • он позволяет удалить функциональность через 2 дня или неделю, просто удалив ее из gem-файла.
  • гарантия, что основная функциональность сайта не нарушена, она просто возвращается к исходной функциональности
  • гарантия, что разработчик имеет не оставили никакого кода где-то в главном приложении
  • плагин / railtie позаботится о сохранении / обновлении данных, которые ему принадлежат

Посмотрел код ActionView, и кажется, что нет встроенного способа сделать это. Что вы думаете?

ПРИМЕЧАНИЕ: хуки Drupal form_alter - отличный тому пример.

9
задан Uzbekjon 8 February 2012 в 16:34
поделиться