0

我有一个链接可以在数据库中的属性上切换真/假。对于两个不同的属性,我有两个版本的此链接,一个有效,另一个无效,除非我强制使用特定 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

我已经为此工作了几个小时,在我的一生中,我无法理解为什么一个会失败而另一个会工作。注意这两个都出现在同一页面上,如果我像这样传递特定的 ID,则不起作用的那个将起作用:

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

我使用变量 pass 得到的具体错误是:“No route matches {:action=>"toggle_confirmed_true", :controller=>"tasks", :id=>nil"

非常感谢任何见解。

4

1 回答 1

1

运行“rake routes”命令。这将按照它们在 routes.rb 中出现的顺序打印您的所有路线。确认订单。

您要查找的路径应按顺序排在第一位。

于 2012-11-19T16:43:36.823 回答