【发布时间】:2012-07-05 10:20:43
【问题描述】:
我正在构建一个管理控制面板(尝试;))。
我一直在查看Backend administration in Ruby on Rails,并按照建议尝试让 Admin::AdminController 检查管理员并设置布局等。
但我也尝试在其中设置一个路由,将 /admin 路由到 /admin/dash
根据我对阅读http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing的理解,特别是第2.6节,
Admin::AdminController
告诉rails Admin 是名称空间,AdminController 是控制器,它是ApplicationController 的子类(扩展?接口的实现?)。这意味着控制器应该存在于 app/controllers/admin/ 并被称为 admin_controller.rb。
但我想要的是
管理员控制器
我收到如下错误:
uninitialized constant Admin::Controller
我的路线代码:
match :admin, :to => 'admin/admin#dash'
namespace :admin do
# Directs to /admin/resources/*
match '/dash', to: '#dash'
resources :users, :pictures
end
我已将控制器放在 app/controllers/admin、app/controllers 和组合中
class Admin::AdminController < ApplicationController
before_filter :admin_user
# / ** STATIC ADMIN PAGES ** /
def dash
end
end
或类 AdminController 编辑:也许这是我对路由的理解。
示例: 对比 对比 第一个成功了,所以我可以通过控制器显示破折号,即 admin/dash 将由 第二个路由 admin/admin/dash 到 admin/dash 吗? TL/DR:
我认为我的困惑来自语法或我对 RESTful 实践的理解不足,甚至可能是 ruby 中的类/对象继承。 感谢您帮助这个 n00b。 :) 附带问题:我是否可以将我的代码更改为最小化,直到有人像剧透一样打开它,这样如果我找到更多信息并添加它就不会造成混乱? namespace :admin do
get "/dash"
namespace :admin do
match "/dash" to "admin#dash"
namespace...
match "/dash" to "#dash"
AdminController < ApplicationControler
def dash
end
【问题讨论】:
标签: ruby-on-rails inheritance namespaces controller routes