0

だから私はアクセスしたときに欲しい: site.com/panel を調べて /app/controller/panel/index_controller.rb

始める前に、私はルビーに不慣れで、数時間前に始めました

だから私のroutes.rbにはこれがあります

 namespace :panel do
   root 'index#index'
 resources :index
 end

そして、 /app/controller/panel/index_controller.rb に index_controller.rb というファイルを作成しました。これは次のようになります。

class IndexController < ApplicationController
  def index
    @foo = "Foo"
  end
end

site.com/panel にアクセスすると、次のように表示されます: クラス IndexController のスーパークラスの不一致 ここに画像の説明を入力

私は何を間違えましたか?また、/app/controller/panel/*_controller.rb 内のコントローラーに使用するために、ここでさまざまなビューとレイアウトをセットアップできますか?

4

2 に答える 2

2

これを交換

class IndexController < ApplicationController

class Panel::IndexController < ApplicationController

アップデート:

名前空間付きコントローラーを自動的に生成するには、このようにジェネレーターでビルドされたレールを使用できます

rails g controller panel/users

Panel::Users < ApplicationControllerこれにより、コントローラーが生成されますapp/controllers/panel/users_controller.rb

于 2013-08-20T20:18:03.220 に答える
1

index内でリソース ルートの名前空間を指定したため、これを反映するために宣言にpanelプレフィックスを付ける必要があります。IndexController

# app/controllers/index_controller.rb
class Panel::IndexController < ApplicationController

次に、Rails が正しいビューを適切に呼び出せるようにするために、同様に名前空間をファイルシステムに反映させることができます。

/app/views/panel/index/index.html.erb
/app/views/panel/index/show.html.erb
... etc

: Rails の規則では、 として宣言されているルートは、完全に機知に富んだクラスであることを示すため、pluralresourcesという名前を付ける必要があります。したがって、このパラダイムによれば、実際には. ただし、単一のルートを使用することを意図している可能性があると思われます。その場合、宣言は次のようになります。indexindexes

namespace :panel do
    resource :index
end

これにより、次の特異なルートが作成されます(これは、達成しようとしているものによりよく適合する場合があります):

         panel_index POST   /panel/index(.:format)                         panel/indices#create
      new_panel_index GET    /panel/index/new(.:format)                     panel/indices#new
     edit_panel_index GET    /panel/index/edit(.:format)                    panel/indices#edit
                      GET    /panel/index(.:format)                         panel/indices#show
                      PUT    /panel/index(.:format)                         panel/indices#update
                      DELETE /panel/index(.:format)                         panel/indices#destroy
于 2013-08-20T20:34:42.993 に答える