不在Rails 3中渲染默认应用程序布局

时间:2013-01-16 10:26:39

标签: ruby-on-rails ruby layout default

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

root:to => '家#索引'

资源:主页

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

3 个答案:

答案 0 :(得分:5)

在你的控制器中写

   class TetsController < ApplicationController
      layout "layout_name"
      #...
    end

答案 1 :(得分:2)

默认情况下,应用程序布局将调用所有控制器,但如果要渲染特定布局,则应执行此操作

class HomeController < ApplicationController
   layout 'home'
end

HTH

答案 2 :(得分:2)

  

默认情况下,控制器将首先查找带有的模板   布局文件夹中的相同名称,如果找不到,则会   渲染默认的应用程序布局。

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

  

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

谢谢大家。