我正在创建一个带有博客模块的网站。博客文章可以是草稿或已发布。
已发布的帖子无法再编辑,草稿无法查看(仅编辑)
我目前有一个资源定义为
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路由,并相应地映射 url。
谢谢