Haml - 如何强制标记属性仅使用双引号,如何按照我想要的方式命令标记属性?

Key*_*ame 18 html haml staticmatic

我将staticmatic用于稍后用PHP的模板.有一种奇怪的情况,有些标签属性有单引号,有些则有双引号.我希望他们所有人都有双引号(不是我认为这很重要,但我希望他们这样!)

例如,haml代码:

!!! XML
%html{html_attrs('hr-HR')}
  %head
    %title Some title
    %meta{'http-equiv' => 'Content-Type', :content => 'text/html; charset=utf-8'}/
    %meta{'name' => "description", :content => 'Some title - YO!'}/
    = stylesheets
    = javascripts('test', :other)
  %body
    = yield
Run Code Online (Sandbox Code Playgroud)

产生以下:

<?xml version='1.0' encoding='utf-8' ?>
<html lang='hr-HR' xml:lang='hr-HR' xmlns='http://www.w3.org/1999/xhtml'>
  <head>
    <title>Some title</title>
    <meta content='text/html; charset=utf-8' http-equiv='Content-Type' />
    <meta content='Some title - YO!' name='description' />
    <link href="stylesheets/application.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/grid.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/text.css" media="all" rel="stylesheet" type="text/css"/>
    <script language="javascript" src="javascripts/test.js" type="text/javascript"></script><script language="javascript" src="javascripts/other.js" type="text/javascript"></script>

  </head>
  <body>
    <h1>some body stuff!</h1>
    utf test š???ž Š???Ž
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

请注意,如果我在haml代码中使用单引号或双引号并不重要,我总是得到相同的输出!

此外,似乎haml-> html输出按字母顺序排序标记属性,而不是我用haml命令它们的方式.我怀疑这与ruby数组有关,但我不确定,因为我不能/不能在静态的情况下使用Ruby而不是haml.我怎么能按照我在haml代码中用ruby数组中的顺序订购它们?

Rob*_*t K 29

请尝试以下方法:

Haml::Template.options[:attr_wrapper] = '"'
Run Code Online (Sandbox Code Playgroud)

  • 对于Rails3,我将这行放入`config/initializers/haml.rb`中. (3认同)