Özel bir Rails yöntemini geçersiz kılmak istiyorsanız, istediğiniz sonucu alabilirsiniz. Bunu yaparsanız, özel yöntem mantığını güncelleyen Rails'in sonraki sürümlerine yükseltme yaparken sorunlara neden oluyorsunuz. Hem <div itemscope ...>
hem de <div itemscope="itemscope" ...>
her ikisi de HTML5 özelliklerine göre geçerli olduğundan, aşağıdaki değişikliği çok az getiri sağlar. Bunu yapmak için düşünebilmemin tek nedeni, HTML kod stiliniz hakkında tamamen takıntılı olmanızdır.
Chris Heald'in dediği gibi, itemscope
'u BOOLEAN_ATTRIBUTES
'a ekleyeceğiz ve ardından boolean özniteliklerini değerler olmadan çıktılamak için etiket yardımcısını geçersiz kılacağız. (Aşağıdaki tag_options yöntemi Raylar gelen değiştirilir/ActionPack 3.0.7 - Gelecek okuyucular if BOOLEAN_ATTRIBUTES.include?(key)
satırdan sonra değişiklik yapmak sonra çağdaş tag_options kodunu kopyalayıp olmalıdır.)
module ActionView
module Helpers
module TagHelper
BOOLEAN_ATTRIBUTES.merge(['itemscope', :itemscope])
private
def tag_options(options, escape = true)
unless options.blank?
attrs = []
options.each_pair do |key, value|
if BOOLEAN_ATTRIBUTES.include?(key)
attrs << key.to_s if value
elsif !value.nil?
final_value = value.is_a?(Array) ? value.join(" ") : value
final_value = html_escape(final_value) if escape
attrs << %(#{key}="#{final_value}")
end
end
" #{attrs.sort * ' '}".html_safe unless attrs.empty?
end
end
end
end
end
Şu anda ile görünümünüzü güncelleyebilirsiniz:
content_tag(:div, "somecontent", :itemscope => true, :item_type => "http://data-vocabulary.org/Breadcrumb"
FWIW, uzantıları mevcut sınıflara ör. lib/extensions/action_view.rb
; Bu uzantılar, aşağıdakilerden oluşan config/initializers/extensions.rb
tarafından yüklenir:
Bummer. Yine de harika cevap Chris. Teşekkürler! – dhulihan