gpt4 book ai didi

ruby-on-rails - 如何改进使用与资源同名的 namespace 的路由器

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:22 24 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 3.0.7,我正在尝试正确(并且尽可能地)设置我的路由器。

routes.rb我有的文件:

namespace :articles do 
resources :categories
end

resources :articles

为了按预期工作,我必须说明 namespaceresources :articles 之前语句,以便路由器拦截请求并将这些请求定向到与文章相关的命名空间。否则(如果 resources :articlesnamespace 之前说明),因为可以从上面的代码中推导出所有请求,如

<my_site>/articles/1
<my_site>/articles/new
<my_site>/articles/1/edit
...

被拦截,因此“几乎”无法到达 articles 命名空间。例如,如果您发出类似 <my_site>/articles/categories 的请求它将产生如下错误:

ActiveRecord::RecordNotFound
Couldn't find Article with ID=categories

那么,我该如何处理这种情况以及如何改进路由器代码呢?你有什么建议?


运行命令 rake routes在我的控制台中,我得到了这个(按顺序):

articles_categories GET   /articles/categories(.:format)                                                        
{:action=>"index", :controller=>"articles/categories"}

POST /articles/categories(.:format)
{:action=>"create", :controller=>"articles/categories"}

new_articles_category GET /articles/categories/new(.:format)
{:action=>"new", :controller=>"articles/categories"}

edit_articles_category GET /articles/categories/:id/edit(.:format)
{:action=>"edit", :controller=>"articles/categories"}

articles_category GET /articles/categories/:id(.:format)
{:action=>"show", :controller=>"articles/categories"}

PUT /articles/categories/:id(.:format)
{:action=>"update", :controller=>"articles/categories"}

DELETE /articles/categories/:id(.:format)
{:action=>"destroy", :controller=>"articles/categories"}

articles GET /articles(.:format)
{:action=>"index", :controller=>"articles"}

POST /articles(.:format)
{:action=>"create", :controller=>"articles"}

new_article GET /articles/new(.:format)
{:action=>"new", :controller=>"articles"}

edit_article GET /articles/:id/edit(.:format)
{:action=>"edit", :controller=>"articles"}

article GET /articles/:id(.:format)
{:action=>"show", :controller=>"articles"}

PUT /articles/:id(.:format)
{:action=>"update", :controller=>"articles"}

DELETE /articles/:id(.:format)
{:action=>"destroy", :controller=>"articles"}

最佳答案

检查这个rails documentation关于 Controller 命名空间。它说你需要命名你的类别 Controller ,如 Articles::CategoriesController,你需要将你的类别 Controller 放在 app/controllers/articles 目录下。

关于ruby-on-rails - 如何改进使用与资源同名的 namespace 的路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6567504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com