2013-03-14 64 views
0

說我有這樣的如何在所有圖像標籤中添加/替換alt/title屬性?

# 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插曲,它附加在原有的更換它的頂部,而不是整個身體。

我是不是在機架上做錯了,還是有更聰明的方法來做到這一點?

回答

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屬性。

+0

謝謝,這將起作用,但我正在尋找一種不改變當前模板的方式。 – kukrt 2013-03-15 04:44:13

+0

我已經更新了我的答案。 – Sam 2013-03-15 12:11:44