0

この問題に一日中かかりました...

良い;

すべての管理ページを /admin ディレクトリに配置し、ドメイン/管理スタイルのみでそれらを受信しようとしています。このガイドで実行しようとしました。

その公式ガイドによると、私が探しているのはscope自分のroutes.rbファイルで使用しています。なぜなら、私は自分のページ内で何度も名前付きルートのトーンを使用してきたからです. 名前付きルートを28 通りに使用しているため、program_path名前付きルートを変更したくありません。admin_program_path

したがって、scope代わりにを使用することになっていますnamespace

問題は次のとおりですscope。自分のプロジェクトで作業を行うことができません。

ここに私のroutes.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_controlleradmin フォルダと controllers ディレクトリのルートの両方に配置しようとしました... まさか。

ここで私の間違いはどこですか?:(

前もって感謝します...

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_」で始まる必要があります

于 2012-10-12T17:27:04.713 に答える