我正在尝试在Rails 3中使用模板继承。我在application_controller.rb中有以下代码:
layout :set_layout
def set_layout
layout_name = Club.find(1).layout.name
prepend_view_path("views/#{layout_name}")
layout_name
end
这确实将布局正确设置为与特定俱乐部相关联的布局(在本例中称为“layout1”),但是当我尝试通过制作以下文件夹结构来覆盖视图时:
app
-views
--home
---indes.html.erb
--layout1
---home
----index.html.erb
它捕获 views / home / index.html 而不是 views / layout1 / home / index.html.erb 。
当我按如下方式打印视图路径时:
<% controller.view_paths.paths.each do |t| %>
<%= t %><br>
<% end %>
它会打印正确的 views / layout1 作为第一个,但仍然找不到正确 index.html.erb 文件的内容。
在layouts文件夹中的 layout1.html.erb 中,我只说收益率。
我是否以某种方式误解了这个概念?
答案 0 :(得分:0)
经过这么多时间检查后,我发现了问题。我在函数中设置视图路径,仅用于设置布局,如
layout :set_layout
def set_layout
prepend_view_paths ...
#return the layout name
end
虽然我应该在过滤器之前使用它来设置不同功能的视图路径。
我之前没有意识到这一点的原因是视图路径在布局中正确打印..