当我尝试将根定义到命名空间时,我遇到了一些错误。要重新创建它,我将从头开始重建项目。
rails new rails_test
cd rails_test
rails generate controller admin
rake db:migrate
现在我在app / controllers / admin_controller.rb中添加了一些样板文件
class AdminController < ApplicationController
def index
end
end
<p>Index</p>
最后在config / routes.rb
中 root to: 'admin#index'
这一切都很完美,当我启动服务器并点击'/'(root)url(它进入管理员索引页面)时,但这不是我想要的。
这意味着要成为更大项目的一部分,我想点击/ admin网址并获取管理员索引(从http://guides.rubyonrails.org/routing.html#using-root开始)我将routes.rb更改为:
namespace :admin do
root to: "admin#index"
end
但是我收到了路由错误:
未初始化的常量管理员
包含一行的路线列表:
admin_root_path GET /admin(.:format)admin / admin #index
我从阅读最后一行结尾的想法是,我已经在管理员命名空间中,所以也许我不需要指定控制器索引,所以我尝试将路由更改为:
namespace :admin do
root to: "index"
end
但是这给了我一个ArgumentError,在'root to:“index”'行上写着“missing:action”。
我可以通过使用范围来解决它,但看起来使用命名空间有点干净,我想了解这里出了什么问题。
Ruby / Rails版本
ruby -v -> ruby 1.9.3p392 (2013-02-22) [i386-mingw32]
rails -v -> Rails 4.0.0
任何帮助都是适用的
答案 0 :(得分:1)
namespace
名称空间控制器也是如此。将你的改为
class Admin::AdminController < ApplicationController
def index
end
end
将其移至app/controllers/admin
下。这就是admin/admin#index
的含义。 :)
答案 1 :(得分:0)
根据rubyonrails.org guide on routing你应该可以做这样的事情。 它看起来应该是这样的
namespace :admin do
root to: "admin#index"
end
root to: "home#index"
你对rake路线有什么看法?
答案 2 :(得分:0)
在轨道4上的路线中,两个根目前没有被允许
使用 得到“/ admin”=&gt; “admin / admin #index”,:as =&gt; “管理员”
输入终端
rails generate scaffold Admin::User username email
rake db:migrate
如果只有控制器输入此
rails generate controller Admin::User
答案 3 :(得分:0)
我认为你真正想要的是像
namespace :admin do
get 'other'
end
get 'admin' => 'admin#index'
这允许index
和other
方法位于通常目录中的直接AdminController
控制器中,视图位于views/admin
等。
您也可以使用
resource :admin, only: [:index] do
get 'other'
end