如何向stylesheet_link_tag“application”添加空属性?

时间:2013-05-12 15:04:46

标签: ruby-on-rails ruby-on-rails-3 html5 attributes ruby-on-rails-3.2

如何向<%= stylesheet_link_tag "application", :media => "all" %>添加空属性?

我想为其添加data-skrollr-stylesheet emty属性,因此输出html将为:

<link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" data-skrollr-stylesheet>

1 个答案:

答案 0 :(得分:1)

你不能用帮手做到这一点。 stylesheet_link_tag最终会调用tag,使用tag_options方法呈现选项:

def tag_options(options, escape = true)
  unless options.blank?
    attrs = []
    options.each_pair do |key, value|
      if key.to_s == 'data' && value.is_a?(Hash)
        value.each do |k, v|
          unless v.is_a?(String) || v.is_a?(Symbol) || v.is_a?(BigDecimal)
            v = v.to_json
          end
          v = ERB::Util.html_escape(v) if escape
          attrs << %(data-#{k.to_s.dasherize}="#{v}")
        end
      elsif BOOLEAN_ATTRIBUTES.include?(key)
        attrs << %(#{key}="#{key}") if value
      elsif !value.nil?
        final_value = value.is_a?(Array) ? value.join(" ") : value
        final_value = ERB::Util.html_escape(final_value) if escape
        attrs << %(#{key}="#{final_value}")
      end
    end
    " #{attrs.sort * ' '}".html_safe unless attrs.empty?
  end
end

请注意,选项始终以key=value方式呈现。

但是,您可以使用空字符串呈现该属性:

<%= stylesheet_link_tag "application", :media => "all", :data => {'skrollr-stylesheet' => ''} %>