【问题标题】:Empty attribute with Ruby HAMLRuby HAML 的空属性
【发布时间】:2011-06-05 16:02:14
【问题描述】:

我正在使用 HAML 的 Ruby 项目上实现 Schema 微格式,但不知道如何在标签上设置空属性。我尝试了 nil 和 false,但它们根本没有显示。

示例:<div itemscope>

我正在尝试设置一个空的 itemscope 属性。

@StrangeElement 注释中添加的代码:

我的代码:

.agency.premium{:itemscope => true, :itemtype => 'schema.org/ProfessionalService';} 

:itemscope => true 似乎是 HAML 文档中推荐的方法。我得到的结果与使用 :itemscope => '' 得到的结果相同,这是一个具有空值的 XHTML 有效属性(即 <div itemscope="">)。

可能没问题,但我宁愿将其留空,如 Schema 文档中所述。

【问题讨论】:

  • 你能粘贴你的Haml代码吗?
  • 你试过空字符串吗? %span{ :itemscope => '' }
  • 我的代码:.agency.premium{:itemscope => true, :itemtype => 'schema.org/ProfessionalService'}。 :itemscope => true 似乎是 HAML 文档中推荐的方法。我得到的结果与使用 :itemscope => '' 得到的结果相同,这是一个具有空值的 XHTML 有效属性(即
    )。可能没问题,但我宁愿把它留空,正如 Schem adoc 中所记录的那样。
  • 在您的帖子中,使用 `(反引号)字符将您的标记包裹起来,这样它就会可见。

标签: ruby-on-rails ruby haml


【解决方案1】:

使用类似的东西

%div{:itemscope => true}

是在您的 Haml 文件中指定它的正确方法。

如何呈现取决于您如何设置 Haml 的 format option。 Haml 3.1 中的默认值是xhtml,因此它将呈现为itemprop='itemprop',这是有效的xhtml。要使用最小化属性(如<div itemscope>)进行渲染,您需要将格式设置为html4html5。 (在 Rails 3 中默认为 html5,在 Haml 4.0 中默认为 html5)。

如何设置 Haml 选项取决于您如何使用它,请参阅options section in the docs

例如,直接在 Ruby 中使用 Haml,这样:

engine = Haml::Engine.new '%div{:itemscope => true}'
puts engine.render

生成具有完整属性的默认 xhtml:

<div itemscope='itemscope'></div>

但是这个:

engine = Haml::Engine.new '%div{:itemscope => true}', :format => :html5
puts engine.render

用最小化的属性产生期望的结果:

<div itemscope></div>

【讨论】:

    【解决方案2】:

    如果有人对如何以这种方式输入更多单词感兴趣,他可以使用"foo bar" =&gt; true

    %option{ "disabled selected value" => true } Choose an option
    

    结果是:

    <option disabled="" selected="" value="">Choose an option</option>
    

    并按预期工作。

    【讨论】:

      【解决方案3】:

      接受的答案有效,但它会生成一个带有值的 HTML 属性。

      如果你希望属性只在 HTML 上输出,没有值,你可以使用HTML-style attributes syntax of HAML:

      %div(itemscope)
      

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签