Rails路由:删除编辑后缀为url

时间:2012-12-16 16:24:42

标签: ruby-on-rails ruby-on-rails-3 rails-routing

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

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

我目前有一个资源定义为

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

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

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

我需要定义newcreateeditupdate路由才能使用此新方案。 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路由,并相应地映射网址。

由于

1 个答案:

答案 0 :(得分:2)

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

namespace :blog do
  resources :drafts, :controller => :posts, only: [:new, :edit]
  resources :posts, only: :show
end