说我有这样的动作模板
# home/index.html.erb
<%= img_tag "logo.gif" %>
如果我想为它添加alt / title属性,我可以做到
# home/index.html.erb
<%= img_tag "logo.gif", alt: "alt!!", title: "title!!" %>
但我有1000个图片标签,我不想每个都改变它们。
然后我考虑使用机架中间件并在从服务器输出之前修改图像标签。 http://railscasts.com/episodes/151-rack-middleware?view=asciicast
doc = Nokogiri.HTML(@response.body)
doc.search("img").each do |tag|
[:alt, :title].each{|attribute| tag[attribute] = "changed!!" }
end
但是当我按照railscast一集时,将整个正文添加到原始版本的顶部,而不是替换。
我在机架上做错了,还是有更聪明的方法来做到这一点?
答案 0 :(得分:3)
更新回答:
# /config/initializers/image_tag_helper.rb
module ActionView
module Helpers
module AssetTagHelper
def image_tag(source, options={})
options[:src] = path_to_image(source)
options[:alt] = "Default Alt" unless options.has_key?(:alt)
options[:title] = "Default Title" unless options.has_key?(:title)
tag(:img, options)
end
end
end
end
这会覆盖image_tag
辅助方法,以设置默认alt
和title
属性。