对不起,我是Rails的新手,所以我会努力做到尽可能具体。
在我的模板中,我有一个大的“标题”样式图像。我想将该图像换成另一个与正在显示的视图相关联的图像。也许这可以使用助手来完成?我甚至不知道从哪里开始。
我知道我可以创建一堆模板页面,并使用所需的视图加载每个模板页面,但我认为当我只想交换一个图像时需要加载很多重复的代码行。有没有人有想法?
答案 0 :(得分:2)
根据您的需要,有几个选项。我想到的第一件事就是创建一些辅助方法。一个用于从您的自定义视图调用,另一个用于从全局布局调用。
例如,创建一个文件app/helpers/layout_helper.rb
module LayoutHelper
def header_image_tag
@header_image ||= 'whatever-my-default-image-is.png'
image_tag @header_image
end
def header_image(image_path)
@header_image = image_path
end
end
在您的布局文件中......例如app/views/application.html.erb
。类似的东西:
<div id='banner'>
<%= header_image_tag %>
</div>
在您不想要默认图像的个别视图文件中:
<% header_image 'other-image.png' %>
这应该让你开始。您可能希望允许header_image_tag
使用一些选项传递给image_tag,或者设置一些可以覆盖的默认值。
您可以利用的另一件事是content_for
和yield
阻止。
示例...在您的自定义视图中,您可以在视图的顶部放置类似的内容:
<% content_for :banner do %>
<%= image_tag 'blah.png' %>
<% end %>
并在你的布局中
<div id='banner'>
<%= yield :banner || image_tag 'my-default.png' %>
</div>