Główny cel: Zezwól wtyczkom, klejnotom na dodawanie dodatkowych pól formularzy do predefiniowanych formularzy.Jak dodać dodatkowe pola formularza poza blokiem deklaracji formularza
Na przykład, aplikacja ma opracować formularz logowania:
<%= form_for(resource, :as => resource_name, ...) do |f| %>
<%= devise_error_messages! %>
...
<% end %>
Dział marketingu chce rozpocząć kampanię na następne 2 dni (ex: zarejestruj kodem promocyjnym i dostać dodatkowe punkty X). Musimy więc dodać dodatkowe pole promo code
do WSZYSTKICH naszych formularzy rejestracyjnych.
Czy istnieje sposób, aby dodać dodatkowe pole do formularza z mojej wtyczki-szyny/kolejki, i zdefiniować metodę wywołania zwrotnego on_submit
(aby podjąć działanie w sprawie dodatkowych danych pola)?
Korzyści:
- umożliwia usunięcie funkcjonalności w 2 dni lub tydzień po prostu przez usunięcie go z pliku gem
- gwarancji, że podstawowe funkcje witryny nie jest uszkodzony, to po prostu spada z powrotem do oryginalna funkcjonalność:
- gwarancja, że programista nie zostawił kodu gdzieś w głównej aplikacji
- Wtyczka/railtie zajmuje się zapisywaniem/aktualizacją danych, które należą do niego
Wygląda na kod ActionView i wygląda na to, że nie ma na to żadnego sposobu. Jakie są Twoje myśli?
UWAGA: Haki Drupala o form_alter
są doskonałym przykładem.
W jaki sposób zapisałeś przesłane dane? – Uzbekjon
Zapisałem go, tworząc tabelę user_answers. 'UserAnswer', które ma' belongs_to: user; belongs_to AdditionalField; 'z polami' user_id, additional_field_id, answer_value' – TomDunning
uzbekjon - Dodałem kod użyty do projektu, który zrobiłem. Możesz zapytać o więcej, jeśli to nie ma sensu. – TomDunning