0

这个问题花了我一整天...

好;

我只是想将我所有的管理页面放在 /admin 目录中,并仅通过 domain/admin 样式接收它们。我试图让它与指南一起运行。

根据该官方指南,我正在寻找的是scope在我的routes.rb文件中使用。因为,我在我的页面中使用了多次命名路由音调。我不希望我的program_path命名路线改变admin_program_path,因为我有 28 种不同的用法。

所以我应该使用scope而不是namespace.

问题是:我无法scope使用我的项目。

这是我的路线.rb

 scope "/admin" do

  get "access/login"
  get "access/index"

  match "access/login_attempt", to: "access#login_attempt"
  match "access/logout", to: "access#logout"

  resources :admin_users

  root to: 'programs#index'

  resources :programs
  resources :program_categories
  resources :program_subcategories

  resources :articles
  resources :pictures



  match '/kategoriler/:id' => 'program_categories#show'
  match '/kategoriler' => 'program_categories#index'
  match '/kategori/yeni' => 'program_categories#new'
  match 'program/yeni' => 'programs#new'
  match 'programlar' => 'programs#index'
  match '/progam_categories/select_category/:program_id' => 'program_categories#select_category'
  match '/program_subcategories/select_subcategory' => 'program_subcategories#select_subcategory'
  match '/program_subcategory/add_subcategory' => 'program_subcategories#add_subcategory'

  end

这是我的控制器开始:

class ProgramsController < ApplicationController

就像这里所说的:

If you want to route /admin/posts to PostsController (without the Admin:: module prefix), you could use
scope "/admin" do
  resources :posts, :comments
end

结果,我得到了什么?

此错误消息:

Routing Error

uninitialized constant ProgramsController

无论我尝试访问哪个控制器,错误都会以这种方式发生变化。例如uninitialized constant ProgramCategoriesControlleruninitialized constant ProgramSubcategoriesController等等...

我试图将application_controller两者都放在管理文件夹和控制器目录的根目录中......没办法。

我的错误在哪里?:(

提前致谢...

4

1 回答 1

1

尝试使用:module参数:

scope '/admin', :module => 'admin' do
  # ...
end

假设您的控制器位于Admin模块命名空间中,因此它们以“Admin::”开头。

[编辑]

这是对您在下面有关路径冲突的评论中的问题的回应。您可以使用:as参数,例如:

scope '/admin', :module => 'admin', :as => 'admin' do
  # ...
end

你可以用rake routes. admin 范围内的所有路由现在都应该以 'admin_' 开头

于 2012-10-12T17:27:04.713 回答