如果我有一个包含多种现有记录形式的单页:
index.html.haml
- for selection in @selections
- form_for selection, :method => :put do |form|
= form.collection_select :user_id, @current_account.users, :id, :full_name
然后提交并更新操作:
selections_controller.rb
def update
selection = Selection.find(params[:id])
if selection.update_attributes(params[:selection])
flash[:notice] = "Save!"
redirect_to selections_path
else
flash[:errors] = "Errors"
render :index
end
end
如果我在同一页面上有这些多个表单,如何处理错误消息。 即如果我想使用:
selection.errors.on(:user_id)
其中一种表格?
答案 0 :(得分:1)
通常你会想要使用error_msg_for帮助器。
= error_messages_for object
但是在你的情况下,因为你根据一个信号的更新渲染多个表格,你还有一些工作要做。
首先,您的更新操作应重新填充@selections,并将无法更新的选择作为实例变量提供给视图。
def update
@selection = Selection.find(params[:id])
if @selection.update_attributes(params[:selection])
flash[:notice] = "Save!"
redirect_to selections_path
else
@selections = Selection.find ....
flash[:errors] = "Errors"
render :index
end
end
接下来将此信息过滤到表单中。
index.html.erb
- for selection in @selections
- form_for selection, :method => :put do |form|
= error_messages_for form.object if form.object.id = @selection.id
= form.collection_select :user_id, @current_account.users, :id, :full_name