0

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

resources :evaluations do
  collection do
    get ':id/change', :action => 'change'

控制器

def change
  @evaluation = Evaluation.find(params[:id])

编辑具有指向更改操作的链接

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

但这也失败了。

4

2 回答 2

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
于 2013-09-09T21:04:36.320 回答
0

事实证明,设置有效。

def update_changed_variables

不需要。相反,痛苦的简单......

change.html.erb 只是调用表单部分,它调用相同的

<%= form_for @evaluation [...]

从而调用updates_attributes

我发誓它没有早点运行。重启网络服务器等... |homer_simpson_moment|

于 2013-09-11T19:04:37.863 回答