Ruby on rails Rails助手方法问题

Ruby on rails Rails助手方法问题,ruby-on-rails,helper,link-to,Ruby On Rails,Helper,Link To,我是rails新手,我认为这是一个非常简单的问题 我有一个“任务”列表。当您单击某个任务时,我想更新其在数据库中的行,以将其标记为已完成(将“状态”列表单0更改为1) 以下是我眼中的链接: <td><%= link_to t.name, change_task_status_path(:id => t.id) %> def change_task_status @t = Task.find_by_id(params[:id]) @t.status = '1

我是rails新手,我认为这是一个非常简单的问题

我有一个“任务”列表。当您单击某个任务时,我想更新其在数据库中的行,以将其标记为已完成(将“状态”列表单0更改为1)

以下是我眼中的链接:

<td><%= link_to t.name, change_task_status_path(:id => t.id) %>
def change_task_status
  @t = Task.find_by_id(params[:id])
  @t.status = '1' # 1 = complete
  @t.save
  render :nothing => true
end
我不知道如何正确设置链接的格式!加载视图时出现以下错误:

undefined method `change_task_status_path' for #<#<Class:0x3a6c144>:0x3a69d54>

把这个放在你的routes.rb中:

resources :tasks do
  member do
    get :change
  end
end
它将添加助手路径
change\u task
传递任务id。
并将您的链接更改为:

<td><%= link_to t.name, change_task_path(:id => t.id) %>
编辑:

要使其成为一个ajax调用,请将
:remote=>true
添加到链接中,如下所示:

<%= link_to t.name, change_task_path(:id => t.id), :remote => true %>    
$('#tasks_list').children().remove();
$('#tasks_list').html(
"<%= j(render('tasks_list')) %>"
);
当您这样做时,您的views文件夹中会有一个
change.js.erb
文件,用于对页面进行所有更改。大概是这样的:

<%= link_to t.name, change_task_path(:id => t.id), :remote => true %>    
$('#tasks_list').children().remove();
$('#tasks_list').html(
"<%= j(render('tasks_list')) %>"
);
$(“#任务列表”).children().remove();
$('#任务列表').html(
""
);

请记住,如果您这样做,您将需要一个部分(
\u tasks\u list.html.erb
)。

运行
rake routes
,查看您的路由名称。我编辑我的问题以显示我的rake routes响应。路径似乎根本没有显示。请尝试查看此链接以获取更多信息:。添加控制器操作时,不会自动获得对其的访问权限。您必须在routes.rb文件中定义它。然后,根据您如何定义它,它将确定您的助手链接的外观。是的,将方法的名称更改为
defchange
。我忘了,对不起你就是那个人!非常感谢。最后一个请求。有没有一种简单的方法可以让它成为在后台运行的ajax调用?我知道使用:remote=>true是有道理的,但我不确定链接格式中的内容。Perfecto!这就成功了。实际上,我省略了respond_to,因为我只需要在链接中添加一个类来显示它已被更改,这是我使用jquery onClick所做的。再次感谢!
$('#tasks_list').children().remove();
$('#tasks_list').html(
"<%= j(render('tasks_list')) %>"
);