Rails没有呈现我的应用程序布局

我刚刚在Rails 3.1.1中创建了一个新的rails应用程序,我的应用程序布局没有在浏览器中呈现。 唯一呈现的是我放在视图中的代码(例如views / public / home.html.erb)。

它只会通过呈现正在传输的内容。 例如,localhost:3000 / public / home仅显示以下内容:

Homepage

Here we go.

Visit the login page

这是我的/layouts/application.html.erb中的内容:

    My App      
  • Logged in as .
"flash#{name}" %>

test!

这也是我的路线:

  root :to => "public#home" match "/secret" => "public#secret" get "logout" => "sessions#destroy", :as => "logout" get "login" => "sessions#new", :as => "login" get "signup" => "users#new", :as => "signup" resources :users resources :sessions 

这是application_contoller.rb中的内容:

 class ApplicationController < ActionController::Base protect_from_forgery end 

这是public_controller.rb中的内容:

 class PublicController < ActionController::Base protect_from_forgery def home end def secret end end 

这是sessions_contoller.rb中的内容:

 class SessionsController  "Logged in!" else flash.now.alert = "Email or password was invalid" render :new end end def destroy logout redirect_to root_path, :notice => "Logged out" end end 

以下是users_controller.rb中的内容:

 class UsersController  "Signed up!" else render :new end end end 

我自己也遇到了同样的问题,问题只是一个简单的错误。

您的控制器PublicController是子类“ActionController :: Base”。 ApplicationController以外的控制器需要从ApplicationControllerinheritance,以便在application.html.erb布局中呈现它们的视图

如果你改变了

 PublicController < ActionController::Base 

 PublicController < ApplicationController 

它应该工作。

最后一个皱纹遇到了同样的问题:我在子类控制器中重写了初始化。 一定要先调用’超级’:

 def initialize super @some_client = SomeClient.new end