【发布时间】:2015-08-06 15:56:32
【问题描述】:
我正在尝试为我的应用程序创建一个后端区域,因此我在其中创建了一个名为 backend 和 backend_controller.rb 的文件夹。我需要该文件夹,因为后端区域将有多个文件夹,因此与其他文件夹更好地分开。
我的routes.rb 看起来像:
namespace :backend do
get 'index'
end
我的backend_controller.rb:
class BackendController < ApplicationController
def index
end
end
但在这种模式下,Rails 将在控制器文件夹中搜索我的backend_controller.rb,而不是在控制器>后端。我尝试了很多变体,但出现路由错误。
那么正确的方法是什么?将路径 /backend 设置为索引操作而不是 /backend/index?
谢谢
我做了什么:
基于所有答案,主要来自 Cyril DD
我在app/controller 文件夹中创建了backend_controller.rb,在子文件夹app/controller/backend 中创建了static_pages_controller.rb,所有文件如下所示:
app/controllers/backend_controller.rb:
class BackendController < ApplicationController
end
app/controller/backend/static_pages_contter.rb:
class Backend::StaticPagesController < BackendController
def dashboard
end
end
routes.rb:
namespace :backend do
resource :static_pages, path: '', only: [] do
root to:'static_pages#dashboard'
end
这很好用,但是因为我是新手,所以我必须问一下。这是一种好的还是传统的方法?要管理用户可以在后端看到的权限,我使用backend_controller.rb 对吗?最后我必须使用resource: 而不是get ''
【问题讨论】:
-
而不是在 routes.rb 中获取 'index' 定义资源后端或命名空间内的资源后端 :backend ... 取决于您的要求
-
如果我这样做了,创建了 te 路由但找不到控制器,给出错误 uninitialize constant