【问题标题】:rails update redirecting to wrong controller导轨更新重定向到错误的控制器
【发布时间】:2010-10-12 02:10:04
【问题描述】:

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

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

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

【问题讨论】:

  • 你能展示你的代码吗...我认为这将有助于更快地解决你的问题

标签: ruby-on-rails forms redirect controller


【解决方案1】:

我发现您可以为表单添加一个 URL 以供其访问,因此我将表单开始标签更改为:

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

我不得不摆脱我的部分,因为我无法指定这两个动作。

【讨论】:

    猜你喜欢
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多