需要:两个表格用于编辑两步流程。
resources :evaluations do
collection do
get ':id/change', :action => 'change'
控制器
def change
@evaluation = Evaluation.find(params[:id])
edit包含指向更改操作的链接
<%= link_to 'Modify initial data', 'change' %>
表单获取以下标记,与编辑表单标记
相同<form accept-charset="UTF-8" action="/evaluations/53" class="edit_evaluation" data-validate="true" id="edit_evaluation_53" method="post" novalidate="novalidate">
失败:提交导致无法采取行动。
如何调用更新属性?
一种想法是让改变行动导致:
def update_changed_variables
@evaluation = Evaluation.find(params[:id])
respond_to do |format|
if @evaluation.update_attributes(params[:evaluation])
但也失败了。
答案 0 :(得分:1)
你需要的只是一个巫师。检查此railscast。
<强>更新强> 将表单切成两个(或更多)表单,根据需要分隔表单属性。在控制器中添加相同数量的操作。设置表单路径以将数据提交到适当的操作。
以下是一个例子:
表单1:
<%=form_for @object, :action => 'form1_action'%>
< form1 attributes >
表单2:
<%=form_for @object, :action => 'form2_action'%>
<form2 attributes >
<%end%>
<强>控制器:强>
form1_action
save object
redirect_to new_form2 if saved
end
form2_action
save object
redirect_to object_show (or another form) if saved
end
答案 1 :(得分:0)
事实证明设置工作正常。
def update_changed_variables
不需要。相反,痛苦简单......
change.html.erb只调用表单partial,它调用相同的
<%= form_for @evaluation [...]
因此调用updates_attributes
我发誓它没有早点跑。重启webserver等... | homer_simpson_moment |