我正在写一个表格供用户注册他们的产品。我已经有了class User has_many :products
和class Product belongs_to :user; attr_accessible :serial_number
。所以这个想法是用户在表格中输入序列号,我打电话@user.products << Product.find_by_serial_number params[:serial_number]
或类似的东西。
将此作为注册操作添加到以下内容似乎是明智的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)我该如何停止这个错误?b) 嗯...按下提交按钮后会发生什么?我假设它会调用update
动作(编辑表单也使用它)......我应该让它更胖来处理这两种可能性吗?还是做出新的动作?(如果是这样,我如何重新路由表格以指向它?) c)错误处理(输入无效的序列号)最好在控制器中处理,而不是在模型中处理,对吗?
谢谢。