我正在创建一个包含博客模块的网站。博客文章可以是草稿或发布。
无法再编辑已发布的帖子,无法查看草稿(仅限编辑)
我目前有一个资源定义为
resources :posts, :path => "blog" do
collection do
get 'drafts'
end
end
我可以使用blog/drafts
访问草稿列表,使用blog/new
创建新帖子,并通过blog/:id/edit
修改草稿。
但是,我希望使用blog/drafts/new
创建新草稿并使用blog/drafts/:id
进行编辑
我需要定义new
,create
,edit
和update
路由才能使用此新方案。 new
和create
路线似乎很简单。但是,我不知道如何处理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
路由,并相应地映射网址。
由于
答案 0 :(得分:2)
您可以使用以下路线。请记住,它需要不同的文件层次结构,rake routes
应该是您的朋友。
namespace :blog do
resources :drafts, :controller => :posts, only: [:new, :edit]
resources :posts, only: :show
end