我正在尝试了解命名空间。
我之前曾就此主题提出过几个问题,但我不明白发生了什么。
我在控制器的文件夹中创建了一个名为' features'的文件夹。在其中,我保存了一个名为app_roles_controller.rb的文件。
该控制器的第一行是:
class Features::AppRolesController < ApplicationController
功能文件夹的目的是让我可以更好地整理文件(就是这样)。
在我的routes.rb中,我尝试过:
resources :app_roles, :namespace => "features", :controller => "app_roles"
我也尝试过:
namespace :features do
resources :app_roles
end
我有一个名为app_role.rb的模型(顶层),我有一个视图文件夹保存为views / features / app_roles,然后在其中包含索引,显示等文件。我的架构中的表名为&#39; app_roles&#34;。
当我为app_roles设置路线时,我得到:
Paths Containing (app_role):
app_roles_path GET /app_roles(.:format)
app_roles#index {:namespace=>"features"}
POST /app_roles(.:format)
app_roles#create {:namespace=>"features"}
new_app_role_path GET /app_roles/new(.:format)
app_roles#new {:namespace=>"features"}
edit_app_role_path GET /app_roles/:id/edit(.:format)
app_roles#edit {:namespace=>"features"}
app_role_path GET /app_roles/:id(.:format)
app_roles#show {:namespace=>"features"}
PATCH /app_roles/:id(.:format)
app_roles#update {:namespace=>"features"}
PUT /app_roles/:id(.:format)
app_roles#update {:namespace=>"features"}
DELETE /app_roles/:id(.:format)
app_roles#destroy {:namespace=>"features"}
我无法理解我做错了什么。
当我尝试:
http://localhost:3000/app_roles#index
我收到错误消息:
uninitialized constant AppRolesController
当我尝试:
http://localhost:3000/features/app_roles#index
我收到错误消息:
No route matches [GET] "/features/app_roles"
我正在寻找一个简单的英语解释,说明如何设置它。我已经尝试过编程ruby书(好几次)。
请您帮我理解在我的rails应用程序中引入组织文件需要做些什么?
答案 0 :(得分:0)
看起来你的其他尝试实际上是正确的。 As outlined in the Rails documentation,如果要为命名空间app_roles
下的资源features
生成路由,可以将以下内容添加到routes.rb
文件中:
namespace :features do
resources :app_roles
end
现在,您运行rake routes
,您会看到以下内容:
Prefix Verb URI Pattern Controller#Action
features_app_roles GET /features/app_roles(.:format) features/app_roles#index
POST /features/app_roles(.:format) features/app_roles#create
new_features_app_role GET /features/app_roles/new(.:format) features/app_roles#new
edit_features_app_role GET /features/app_roles/:id/edit(.:format) features/app_roles#edit
features_app_role GET /features/app_roles/:id(.:format) features/app_roles#show
PATCH /features/app_roles/:id(.:format) features/app_roles#update
PUT /features/app_roles/:id(.:format) features/app_roles#update
DELETE /features/app_roles/:id(.:format) features/app_roles#destroy
例如,第一行表示如果您向/features/app_roles
发出GET请求,则会将其路由到index
控制器中的features/app_roles
操作。
换句话说,如果您访问http://localhost:3000/features/app_roles,它会将请求发送到位于index
的{{1}}操作,该操作预计会有类app/controllers/features/app_roles_controller.rb
。< / p>
因此,您的Features::AppRolesController
文件应如下所示:
app/controllers/features/app_roles_controller.rb