2012-01-08 85 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選項。