2012-01-08 89 views
0

我知道对于下面的问题一定有一个非常简单的解决方案,但我一直试图在最近几个小时内解决它。Rails 3:尝试执行ajax复选框时的路由问题

我想更新一个表格,当选中复选框(使用ajax)。

<% @tasks.each do |task| %> 
<tr><td> 

<%= form_for task, :url => {:controller =>"tasks", :action => "update" }, :remote =>true do |t| %> 
<%= t.check_box :completed_at, :class => 'submittable'%> 
<% end %> 

</td><td> 
<h3><%=task.description %></h3></td> 
<td><%= link_to 'Edit Task',edit_list_task_path(@list, task), :id => "edit_#{task.id}",:class=>"btn info" %></td> 
<td><%= link_to 'Delete Task', list_task_path(@list, task), :method => :delete, :confirm => "Are you sure?", :id => "delete_#{task.id}", :class=>"btn danger "%></td></tr></tr> 

<%end%> 

但是我得到以下路由错误:

No route matches {:controller=>"tasks", :action=>"update"} 

我当前的路由文件看起来像这样:

root :to => "home#index" 
    resources :documents 
    resources :timelines 
    resources :lists 
    resources :tasks 
    resources :fundraisings 
    resources :news 
    get "home/index" 
    devise_for :users, :lists, :fundraisings, :timelines 
    resources :lists do 
    resources :tasks 
    end 
    resources :users do 
    resources :lists  
    end 

任何想法,为什么?

回答

1

使用标准的RESTful路由,您不需要指定url。这不行吗?

form_for task, :remote =>true do |t| 
0

看一看的form_for理解RESTful资源的部分面向资源的风格here的方式。

我上面的例子试图只使用一个路由帮助,例如:url => task_path(task),如果你只是想使用表单来编辑任务而不是创建。对于您可以在控制台上键入rake routes的完整路线列表。

此外,如果您使用正确的网址,您应该能够获得form_for smartly POST(在创建的情况下)或PUT(在更新的情况下)。

如果你想坚持上面的语法,也可以尝试为你的form_for方法添加:method => :put选项。