Я пишу форму для регистрации пользователями своих продуктов. У меня уже есть class User has_many :products
и class Product belongs_to :user; attr_accessible :serial_number
. Поэтому идея состоит в том, что пользователь вводит серийный номер в форме, и я вызываю @user.products << Product.find_by_serial_number params[:serial_number]
или somesuch.Rails form_for и text_field без атрибута модели
казалось разумным, чтобы добавить это как действие регистра в UsersController
:
resources :users do
member do
get 'register'
end
end
И я следующее register.html.erb
:
5: <%= render 'shared/error_messages' %>
6:
7: <%= f.label :serial_number, "Serial number" %>
8: <%= f.text_field :serial_number %>
9:
10: <%= f.submit "Register product" %>
11: <% end %>
Это бросает ошибку:
undefined method `serial_number' for #<User:0x000000060b1d40>
extracted source (around line #8):
...
Итак ... a) Как остановить эту ошибку? б) Умм ... что произойдет после нажатия кнопки отправки? Я предполагаю, что это назовет действие update
(которое также используется формой редактирования) ... Должен ли я сделать это толще, чтобы иметь дело с обеими возможностями? Или сделать новое действие? (Если это так, как мне перенаправить форму, чтобы указать на это?) C) Обработка ошибок (помещая недопустимый серийный номер) лучше всего обрабатывать в контроллере, а не в модели, верно?
Спасибо.