我是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 加载的。可能是什么原因?
答案 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 。
谢谢大家。