gpt4 book ai didi

ruby-on-rails - Rails - 使用 namespace Controller 来组织文件

转载 作者:数据小太阳 更新时间:2023-10-29 07:38:55 24 4
gpt4 key购买 nike

我正在尝试学习命名空间。

我之前就这个主题问过几个问题,但我不明白发生了什么。

我在 Controller 的文件夹中创建了一个名为“功能”的文件夹。在其中,我保存了一个名为 app_roles_controller.rb 的文件。

该 Controller 的第一行是:

class Features::AppRolesController < ApplicationController

features 文件夹的目的是让我可以更好地组织我的文件(仅此而已)。

在我的 routes.rb 中,我尝试过:

resources :app_roles, :namespace => "features", :controller => "app_roles"

我也试过:

namespace :features do
resources :app_roles
end

我有一个名为 app_role.rb 的模型(顶级),我有一个保存为 views/features/app_roles 的 View 文件夹,其中包含索引、显示等文件。我的架构中的表称为“app_roles”。

当我为 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 应用中引入组织文件需要做什么吗?

最佳答案

看起来您的其他尝试实际上是正确的。 As outlined in the Rails documentation ,如果你想为命名空间 features 下的资源 app_roles 生成路由,你可以将以下内容添加到你的 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 请求,它将被路由到 features/中的 index 操作app_roles Controller 。

换句话说,如果你访问http://localhost:3000/features/app_roles它会将请求路由到 index 操作,该操作位于 app/controllers/features/app_roles_controller.rb 中,它希望具有类 Features::AppRolesController.

所以你的 app/controllers/features/app_roles_controller.rb 文件应该看起来像这样:

class Features::AppRolesController < ApplicationController
def index
end
end

关于ruby-on-rails - Rails - 使用 namespace Controller 来组织文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40098684/

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