1

Ruby on Rails アプリケーションのコードの一部:

    #routes.rb
        namespace :admin do
              root :to => 'admin#index'
              resources :orders, :products
        end

  #controllers/admin/admin_contrller.rb
    class Admin::AdminController < ApplicationController
       def index

       end
    end

indexビューは にありますviews/admin/index.html.haml。ただし、見つかりません ( http://localhost:3000/adminテンプレートがありません)。にある場合にのみ検出されviews/admin/admin/index.html.hamlます。

私は何を間違えましたか?でビューを見つけるにはどうすればよいviews/admin/index.html.hamlですか?

4

1 に答える 1

4

名前空間 :admin を作成し、そこにルート パスと注文リソースを配置しました。ルート パスはindexの追加を指していAdminControllerます。この構成により、Rails は、最初の管理者が名前空間で、2 番目がコントローラーのディレクトリであるindex.html.hamlビューを検索します。views/admin/admin/index.html.haml

あなたは何も悪いことをしていません。それがレールの仕組みです。

ビューを見つけて名前views/admin/index.html.hamlを単純に変更し、ディレクトリの下のすべてのコントローラーの基本クラスとして作成するのではなく、お勧めします。AdminControllerDashboardControllerBaseControlleradmin/

アプリ/コントローラー/管理者/admin_controller.rb

class Admin::BaseController < ApplicationController
  #auth etc.
end

app/controllers/admin/dashboard_controller.rb

class Admin::DashboardController < Admin::BaseController

end

このようにして、認証、承認、さまざまなレイアウトなど、および管理コントローラーに必要なその他のものを簡単に追加できます

しかし、本当に自分のソリューションにうんざりしたい場合は、次のrender admin/indexように index アクションで簡単に実行できます。

class Admin::AdminController < ApplicationController
  def index
    render "admin/index"
  end
end
于 2012-08-26T22:14:00.857 に答える