我有一个任务模型,它有一个名称,描述,它所属的过程,位置和类别。
由于只有两个不同的类别,我创建了特定于类别的附加控制器,因为它们需要区别对待。当我在其中一个类别控制器中提交编辑表单时,它会重定向回主任务控制器显示操作。它似乎是一起跳过类别控制器(我通过在每个阶段只渲染文本来测试它,它甚至没有触及更新操作)。我查看了渲染的html输出,并将表单提交给了错误的控制器,但我看不到任何改变它的方法。
那么如何在rails中设置表单操作?
子类别控制器编辑:
def edit
@task = Task.find(params[:id])
@procedures = Procedure.find(:all, :conditions => "comdecom = true")
@gettasks = Task.all
end
这会呈现类别视图编辑:
<div id="page">
<h1>Editing Commissioning task</h1>
<%= render :partial => 'form' %>
<%= link_to 'Back', com_tasks_path %>
</div>
使用部分'形式':
<div id="form">
<% form_for(@task) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :description %><br />
<%= f.text_area :description %>
</p>
<p> To format your text you can use either html or the redcloth textile markup language. A full list of commands can be found at <a href="http://redcloth.org/"> http://redcloth.org/ </a></p>
<p>
<%= swapselect :task, @task, :procedure, @procedures.map {|procedure|[procedure.name, procedure.id]} %>
</p>
<p>
<%= f.label :position, 'Position after:' %><br />
<%= f.collection_select "position", @gettasks, :position, :name %>
</p>
<p>
<%= f.hidden_field :comdecom, :value => '1' %>
<%= f.hidden_field :active, :value => '1' %>
</p>
<p>
<%= f.submit 'Submit' %>
</p>
<% end %>
</div>
当您点击提交按钮时,它会将您带到任务控制器。
答案 0 :(得分:1)
我发现您可以在表单中放置一个URL,然后将表单开始标记更改为:
<% form_for(@task, :url => {:controller => 'com_tasks', :action => 'update', :id => params[:id]}) do |f| %>
我不得不摆脱我的偏见,因为我无法指定这两种行为。