2

我是 Rails 的入门开发人员,我正在对使用 Ruby 1.8.7 和 Rails 3.0.3 开发的应用程序进行系统研究。在我的应用程序中,我有一个带有application.html.erb布局的 application_controller 和一个带有home_html.erb布局的home_controller以及 CRUD 视图。然后在我的routes.rb中,默认路由设置如下,以及家庭的资源丰富的路由。

根 :to => 'home#index'

资源:首页

application.html.rb中,我们有要呈现的默认布局,需要使用<%= yield %>插入其他视图。但我有另一个布局,称为home.html.erb ,其内容与application.html.erb的内容相同。当我运行应用程序时,默认布局是从home.html.erb而不是application.html.erb加载的。可能是什么原因?

4

3 回答 3

5

在你的控制器中写

   class TetsController < ApplicationController
      layout "layout_name"
      #...
    end
于 2013-01-16T10:30:04.463 回答
2

默认情况下,所有控制器都会调用应用程序布局,但如果您想呈现特定布局,您应该这样做

class HomeController < ApplicationController
   layout 'home'
end

高温高压

于 2013-01-16T10:31:28.847 回答
2

默认情况下,控制器将首先在layouts文件夹中查找同名的模板,如果找不到,它将呈现默认的应用程序布局。

在这种情况下,执行home_controller索引操作时,呈现的布局是home.html.rb以及视图内容,因为home.html.rb与控制器的命名格式相同。当我将其更改为home.html.rb时,控制器会从 layouts 文件夹中获取application.html.rb 。所以解决方案是,

只需从views/layouts/文件夹中删除home.html.erb 即可。默认情况下它会自动渲染application.html.erb

谢谢大家。

于 2013-01-16T11:39:38.537 回答