Rails 3,自定义操作和HTML请求方法
我不太了解使用“post”与“get”vs“put”请求,自定义控制器操作以及是否使用链接或表单/按钮的专业人士和骗局。
所以,假设我有一个简单的待办事项列表,包含任务和任务控制器,我想要一个“完整”的操作,我在数据库中找到一个特定的任务,并将其状态属性从“不完整”更新为“完成”。
def complete @task = Task.find(params[:id]) if @task.update_attributes(:status => "complete") redirect_to tasks_url, :notice => "Completed!" else redirect_to tasks_url, :error => "Whoops." end end
定义此路由的最佳实践方法是什么,我应该使用哪种HTML请求方法(post?put?get?),我应该使用普通链接还是表单? (并注意:假设我的用户安全模型都是用设计计算出来的,在filter之前是合适的,等等)
最重要的是,我将如何在Rails 3 routes.rb文件中清楚地表达这一切?
注意,下面的代码并不适合我:
#routes.rb resources :tasks do members do post 'complete' end end
所以目前我正在使用它:
#routes.rb match 'tasks/:id/complete', 'tasks#complete', :as => "complete_task" #view = link_to "Complete", complete_task_path(:id => @task.id)
但这会触发get请求,我觉得它应该是“put”或“post”。 或者它应该是一个链接? 它应该是一个隐藏字段的表单吗?