rails更新重定向到错误的控制器

时间:2010-10-12 02:10:04

标签: ruby-on-rails forms redirect controller

我有一个任务模型,它有一个名称,描述,它所属的过程,位置和类别。

由于只有两个不同的类别,我创建了特定于类别的附加控制器,因为它们需要区别对待。当我在其中一个类别控制器中提交编辑表单时,它会重定向回主任务控制器显示操作。它似乎是一起跳过类别控制器(我通过在每个阶段只渲染文本来测试它,它甚至没有触及更新操作)。我查看了渲染的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>

当您点击提交按钮时,它会将您带到任务控制器。

1 个答案:

答案 0 :(得分:1)

我发现您可以在表单中放置一个URL,然后将表单开始标记更改为:

<% form_for(@task, :url => {:controller => 'com_tasks', :action => 'update', :id => params[:id]}) do |f| %>

我不得不摆脱我的偏见,因为我无法指定这两种行为。