Ruby Rails:控制器没有正确传递ID?

时间:2012-11-19 15:20:10

标签: ruby-on-rails ruby hyperlink controller

我有一个链接可以在数据库中的属性上切换true / false。我有两个版本的链接用于两个不同的属性,一个工作,另一个不工作,除非我强制一个特定的ID,它工作正常。

工作链接视图:

<h1><%= link_to "Toggle True", toggle_completed_true_task_path(@task), :remote => true %></h1>

<h1><%= link_to "Toggle False", toggle_completed_false_task_path(@task), :remote => true %></h1>

工作控制器的视图:

respond_to :html, :js
  def toggle_completed_true
    @task = Task.find(params[:id])
    @task.update_attributes(:completed => true)
  end

  respond_to :html, :js
  def toggle_completed_false
    @task = Task.find(params[:id])
    @task.update_attributes(:completed => false)
  end

链接失败的视图:

<h1><%= link_to "Toggle True", toggle_confirmed_true_task_path(@task), :remote => true %></h1>

<h1><%= link_to "Toggle False", toggle_confirmed_false_task_path(@task), :remote => true %></h1>

失败控制器的视图:

respond_to :html, :js
  def toggle_confirmed_true
    @task = Task.find(params[:id])
    @task.update_attributes(:confirmed => true)
  end

  respond_to :html, :js
  def toggle_confirmed_false
    @task = Task.find(params[:id])
    @task.update_attributes(:confirmed => false)
  end

我已经为此工作了好几个小时,对于我的生活,我不明白为什么一个人应该失败而另一个人工作。 note 这两个都出现在同一页面上,如果我传入一个特定的ID,那么无效的那个将起作用:

<h1><%= link_to "Toggle True", toggle_confirmed_true_task_path(12), :remote => true %></h1>

我通过变量传递获得的具体错误是: &#34;没有路线匹配{:action =&gt;&#34; toggle_confirmed_true&#34;,:controller =&gt;&#34; tasks&#34;,:id =&gt; nil&#34;

非常感谢任何见解。

1 个答案:

答案 0 :(得分:1)

运行&#34;佣金路线&#34;命令。这将按照它们在routes.rb中显示的顺序打印所有路径。确认订单。

您要寻找的路径应该在订单中排在第一位。