0

我有以下链接来发布项目:

# 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 哈希传递?我的控制器操作是否甚至需要在这里修补?

4

1 回答 1

1

对我来说,这就是它应该的样子。这是完全安静的。

首先,您推迟了项目应该如何发布到模型的实施。其次,您不需要params[:project][:published] # => true通过控制器将视图中的任何表单变量(如 )传递给模型并在#publish操作中更新它。少出错的原因。

至于正确的方法:在 Rails 3.x 中我会使用PUT所以是的,Rails 4.x 也许最好使用PATCH.

于 2013-06-13T23:28:54.240 回答