当前位置:  开发笔记 > 后端 > 正文

Ruby on Rails:为RESTful Rails使用"complete_tasks_controller"

如何解决《RubyonRails:为RESTfulRails使用"complete_tasks_controller"》经验,为你挑选了1个好方法。

我很难解决以RESTful方式完成任务的问题.我有一个"任务"控制器,还有一个"complete_tasks"控制器.

我在complete_tasks_controller创建操作中有这个:

def create
   @task = Task.find(params[:id])
   @task.completed_at = Time.now
   @task.save
end

我试着这样说:

<%=link_to "Complete task", new_task_complete_task_path(@task), :method => :post %>

..但是我在提到"只允许获取,放置和删除请求"时遇到错误.

你知道我做错了什么吗?



1> Ryan Bigg..:

将它移动到控制器中名为complete的动作会更有意义:

def complete
  @task = Task.find(params[:id])
  @task.complete!
end

要使用RESTful路由访问此操作,您需要在config/routes.rb中定义这样的新成员路由:

map.resources :tasks, :member => { :complete => :put }

添加:member => { :complete => :put }到任何预先存在的结尾map.resources :tasks也可以做到这一点,你应该只有map.resources :tasks一行,除非它是嵌套的.该路由指南解释了这个比我以往任何时候都能够更好地.

从视图中获取它:

link_to "Complete this task", complete_task_path(@task), :method => :put

complete!然后在您的模型中定义该方法,如下所示:

def complete!
  self.completed_at = Time.now
  save!
end

这样做的原因是它将模型逻辑放在它所属的位置:在模型中.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有