2013-03-14 3 views
0

что у меня есть шаблон действий, как этотКак добавить/заменить атрибут alt/title во всех тегах изображений?

# home/index.html.erb 
<%= img_tag "logo.gif" %> 

, если я хочу, чтобы добавить атрибут альт/название для него, я могу просто сделать

# 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 помощника для установки по умолчанию alt и title атрибуты.

+0

спасибо, это сработает, но я искал способ не менять текущие шаблоны. – kukrt

+0

Я обновил свой ответ. – Sam

Смежные вопросы