Ruby on rails 在Rails 3中:模板图像是否可以与';正在展示什么?

Ruby on rails 在Rails 3中:模板图像是否可以与';正在展示什么?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,对不起,我是Rails的新手,所以我会尽量具体一些 在我的模板中,我有一个大的“标题”样式的图像。我想将该图像换成与正在显示的视图关联的另一个图像。也许这可以用助手来完成?我甚至不知道从哪里开始 我知道我可以制作一堆模板页面,并用所需的视图加载每个模板页面,但我认为当我只想交换一个图像时,需要加载大量重复的代码行。有人有想法吗?根据您的需要,有几种选择。我想到的第一件事是创建两个helper方法。一个用于从自定义视图调用,另一个用于从全局布局调用 例如,创建一个文件app/helpers/lay

对不起,我是Rails的新手,所以我会尽量具体一些

在我的模板中,我有一个大的“标题”样式的图像。我想将该图像换成与正在显示的视图关联的另一个图像。也许这可以用助手来完成?我甚至不知道从哪里开始


我知道我可以制作一堆模板页面,并用所需的视图加载每个模板页面,但我认为当我只想交换一个图像时,需要加载大量重复的代码行。有人有想法吗?

根据您的需要,有几种选择。我想到的第一件事是创建两个helper方法。一个用于从自定义视图调用,另一个用于从全局布局调用

例如,创建一个文件
app/helpers/layout\u 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
在布局文件中。。。e、 g
app/views/application.html.erb
。比如:

<div id='banner'>
  <%= header_image_tag %>
</div>
在你的布局中

<div id='banner'>
  <%= yield :banner || image_tag 'my-default.png' %>
</div>


我发现您发布的第一个方法的代码有错误。在布局文件中。。。e、 g app/views/application.html.erb当需要其他完美代码时,您调用了它。谢谢你的帮助!谢谢,现在答案中更新了。我改变了我想调用helper方法midstream的方式。通常,这将通过测试完成;-)你知道有没有一种方法,我可以做到这一点,但在一个闪光的对象交换?我想出了如何处理这个想法,并使用脚本而不是图像,但“清理”似乎不能很好地处理对象标记不确定您所说的“flash对象”是什么意思。如果您在不希望erb标记内的字符串被清除时遇到问题。。。不要给它消毒。对于Rails3,您可以使用html_-safe或类似的工具。
<% content_for :banner do %>
  <%= image_tag 'blah.png' %>
<% end %>
<div id='banner'>
  <%= yield :banner || image_tag 'my-default.png' %>
</div>