2013-05-18 68 views
1

作爲任務管理應用程序用戶,我想單擊任務上的「已完成」鏈接以將任務的分辨率記錄爲已完成。通過AJAX在Rails 3中通過簡單鏈接(link_to)更新模型屬性

我希望這是一個使用Rails 3 Unobtrusive JavaScript(UJS)方式的AJAX請求。我已經調試了很長一段時間,所以任何幫助將不勝感激。

這裏是的link_to調用我的觀點裏製作:

<%= link_to "Completed", task_path(:id => task.id, :resolution => "completed"), :remote => true, :method => :put %> 

,這裏是我的任務控制器更新方法:

class TasksController < ApplicationController 
    respond_to :js 

    def update 
    @task = Task.find(params[:id]) 
    @task.update_attributes(params[:task]) 
    respond_with(@task) 
    end 
end 

觀看與Chrome的開發者工具的網絡流量就似乎Put請求正在對正確的URL進行,包括URL參數(tasks/{:id}?resolution = completed),但Preview會顯示以下錯誤消息:

Template is missing 

Missing template tasks/update, application/update with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]}. 

Searched in: * "C:/Documents and Settings/Corey Quillen/My Documents/Software Engineering/Projects/Cleaner Card/cleaner_card/app/views" 

回答

0

您需要處理update.js.erb中更新方法的響應。

將該文件放置在app/views/tasks/update.js.erb

+0

謝謝你的迴應。這確實消除了錯誤,但該屬性仍未在數據庫中更新。我需要改變控制器中的某些東西嗎? –

+0

嘗試在控制器中調試參數。你可以粘貼傳遞給控制器​​的參數嗎? – varunvlalan

+0

我決定嵌入一個帶有隱藏表單域的隱藏表單來更新屬性並且工作。謝謝你的幫助。 –

2

你需要作出的決議的任務的屬性 - 那麼它將更新:

<%= link_to "Completed", task_path(:id => task.id, "task[resolution]" => "completed"), :remote => true, :method => :put %> 

在軌道4 - 首選的方法是:補丁的更新。

相關問題