作为任务管理应用用户,我想点击任务上的“已完成”链接,将任务的分辨率记录为已完成。
我希望这是一个使用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),但预览显示以下错误消息:
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 :(得分:2)
您需要将分辨率作为任务的属性 - 然后它将更新:
<%= link_to "Completed", task_path(:id => task.id, "task[resolution]" => "completed"), :remote => true, :method => :put %>
在rails 4中 - 首选方法是:补丁更新。
答案 1 :(得分:0)
您需要在update.js.erb
中处理更新方法的响应。
将该文件放在app/views/tasks/update.js.erb
。