在我的 rails 4 应用程序中,我需要创建一个允许管理员发布文章的 POST 路由。我创建了一个包含多个资源的 admin 命名空间,我希望它能够将发布/取消发布操作与作为 admin 命名空间一部分的文章资源相匹配。但是,操作映射到 admin 命名空间并跳过文章资源。
namespace :admin do
resources :articles
post 'article/:id' => 'articles#publish'
post 'article/:id' => 'articles#unpublish'
resources :ads
end
例如,我得到
admin_path POST /admin/articles/:id(.:format) admin/articles#publish
POST /admin/articles/:id(.:format) admin/articles#unpublish
而不是想要的
admin_articles_path POST /admin/articles/:id(.:format) admin/articles#publish
POST /admin/articles/:id(.:format) admin/articles#unpublish
我很感激任何建议。
最佳答案
首先我要明确的是你不能有 admin_articles_path
作为 'articles#publish'
的路由辅助方法, 因为它已经被 'articles#index
消耗掉了.
admin_articles GET /admin/articles(.:format) admin/articles#index
将您的路线更新为:
namespace :admin do
resources :articles
post 'article/:id' => 'articles#publish', :as => "article_publish"
delete 'article/:id' => 'articles#unpublish', :as => "article_unpublish"
resources :ads
end
生成的 View :
admin_article_publish POST /admin/article/:id(.:format) admin/articles#publish
admin_article_unpublish DELETE /admin/article/:id(.:format) admin/articles#unpublish
我正在使用
unpublish
与 delete
http 动词。这更合乎逻辑。此外,您不能使用相同的路由来指向不同的操作。
关于ruby-on-rails - 与属于命名空间 Rails 4 的资源相关联的匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25029284/