0

私はこのようなアクションテンプレートを持っていると言います

# 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のエピソードをたどると、オリジナルを置き換えるのではなく、オリジナルの上に全身を追加します。

私はそれをラックで間違ってやっていますか、それともこれを行うためのより賢い方法がありますか?

4

1 に答える 1

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を設定するためのヘルパーメソッドをオーバーライドします。alttitle

于 2013-03-14T11:10:04.580 に答える