gpt4 book ai didi

ruby-on-rails - Rails 中带后备功能的动态命名空间 Controller

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

我对新的 Rails 应用程序有一个有点奇怪的要求。我需要构建一个应用程序,其中所有路由都在多个命名空间中定义(让我解释一下)。我想要一个应用程序,其中学校科目(数学、英语等)是 namespace :

%w[math english].each do |subject|
namespace subject.to_sym do
resources :students
end
end

这很棒而且有效,但它需要我为每个主题创建一个命名空间 StudentsController,这意味着如果我添加一个新主题,那么我需要创建一个新 Controller 。

我想创建一个 Base::StudentsController,如果 Math::StudentsController 存在,那么它将被使用,如果不存在,不存在,那么我们可以动态创建这个 Controller 并继承自Base::StudentsController

这是可能的吗?如果是这样,那么我将如何实现呢?

最佳答案

以这种方式定义路由:

%w[math english].each do |subject|
scope "/#{subject}" do
begin
"#{subject.camelcase}::StudentsController".constantize
resources :students, controller: "#{subject}::students", only: :index
rescue
resources :students, controller: "base::students", only: :index
end
end
end

rake routes 输出:

students GET /math/students(.:format)    base::students#index
GET /english/students(.:format) english::students#index

如果 english/students_controller.rb 存在并且 math/students_controller.不存在。

关于ruby-on-rails - Rails 中带后备功能的动态命名空间 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16468030/

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