У меня есть модель уведомлений, и она в основном обрабатывает те же самые вещи. Простая контактная форма, форма приглашения и т. Д. Все они имеют одинаковые общие элементы ... т.е. имя, адрес электронной почты, комментарий, бла.
Может быть одно немного отличающееся поле, но они являются необязательными, поэтому я хотел бы рассматривать их как одну модель с дифференцирующим полем, называемым: notification_type
so Invitation или Feedback, и т. Д. в подпапках под уведомлениями (уведомления / приглашения /).
У меня это нормально работает с чем-то вроде этого в моих маршрутах:
маршруты
resources :notifications
match 'invites' => 'notifications#new', :defaults => { :notification_type => 'invitation' }
Я передаю тип уведомления ...
new.html.erb
<% if params[:notification_type] or params[:notification][:notification_type] == "invitation" %>
<%= render "notifications/invitations/form" %>
<% end %>
form.html.erb
Я передаю скрытое поле для типа уведомления
<%= f.input :notification_type, :as => 'hidden', :input_html => { :value => @notification.notification_type ||= params[:notification_type] } %>
Кажется, все работает ... единственное предостережение в том, что если они создают ошибку, он отправляет их на маршрут /notification
вместо того, чтобы быть в приглашениях ... но все равно работает правильно, но мне интересно, есть ли более простой способ сделать то же самое? Из уровня контроллера? Я чувствую, что что-то удивит меня позже, когда оно стоит.