0

我正在创建一个带有博客模块的网站。博客文章可以是草稿或已发布。

已发布的帖子无法再编辑,草稿无法查看(仅编辑)

我目前有一个资源定义为

resources :posts, :path => "blog" do
  collection do
    get 'drafts'
  end
end

我可以使用 访问草稿列表blog/drafts,使用 创建新的帖子blog/new,并通过 编辑草稿blog/:id/edit

但是,我希望使用创建blog/drafts/new和编辑新草稿blog/drafts/:id

我需要定义newcreate和路由来使用这个新方案editupdate和路线看起来newcreate简单。但是我不知道如何处理edit路由以删除操作名称部分。

此外,在查看默认路由定义时,我发现actionpack-3.2.9/lib/action_dispatch/routing/mapper.rb以下内容:

member do
  get    :edit if parent_resource.actions.include?(:edit)
  get    :show if parent_resource.actions.include?(:show)
  [...]
end

我不明白 rails 如何区分:edit:show路由,并相应地映射 url。

谢谢

4

1 回答 1

2

您可以使用以下路线。请记住,它需要不同的文件层次结构,rake routes应该是你的朋友。

namespace :blog do
  resources :drafts, :controller => :posts, only: [:new, :edit]
  resources :posts, only: :show
end
于 2012-12-16T18:35:39.003 回答