我有以下链接发布项目:
# PATCH to a custom route called publish_project_path
= link_to 'Publish', publish_project_path(project), method: :patch
# in controller
def publish
@project.publish
redirect_to projects_url, notice: 'Project was successfully published.'
end
# in model
def publish
self.published = true
self.save!
end
# in routes
resources :projects do
member do
patch 'publish'
end
end
这是普遍接受的做这种事情的方法,其中属性是在模型中设置的,而不是通过params散列传递的?我的控制器操作是否需要在这里进行PATCH?
答案 0 :(得分:1)
对我而言,这应该是这样的。这非常安静。
首先,您推迟了如何将项目发布到模型的实现。其次,您不需要将任何表单变量(如params[:project][:published] # => true
)从视图通过控制器传递给模型,并在#publish
操作中更新它。减少错误的原因。
至于正确的方法:在Rails 3.x中我会使用PUT
所以是的,使用Rails 4.x也许最好使用PATCH
。