rails3.2.13备用编辑表单

时间:2013-09-09 18:01:50

标签: ruby-on-rails-3.2 routes

需要:两个表格用于编辑两步流程。

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])

但也失败了。

2 个答案:

答案 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 |