【问题标题】:how to append/replace alt/title attribute in all image tags?如何在所有图像标签中附加/替换 alt/title 属性?
【发布时间】:2013-03-14 03:43:01
【问题描述】:

说我有一个像这样的动作模板

# 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 剧集时,它会将整个主体附加在原件的顶部,而不是替换它。

是我在机架上做错了,还是有更聪明的方法来做到这一点?

【问题讨论】:

    标签: ruby-on-rails-3 rack


    【解决方案1】:

    更新答案:

    # /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 辅助方法来设置默认的 alttitle 属性。

    【讨论】:

    • 谢谢,这会起作用,但我正在寻找一种不更改当前模板的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    相关资源
    最近更新 更多