30

我在我的 rails 项目中为我的 html 模板使用 HAML。我想弄清楚是否可以将一条很长的线分成几行:

%a.open-service{href: '#', data: {
  service_name: service.description,
  balance_type: "coinsurance",
  total: service.a_total_billed - service.a_rejected - service.a_not_covered, 
  discount: service} }

正如你所看到的,我只想拥有一个带有 href 和一些数据属性的锚点,并且使它成为单行代码并不是一个漂亮的代码。但是当我像上面那样做时,我得到一个错误:“不平衡的括号”。

有什么帮助吗?

4

5 回答 5

39

根据Haml 文档,新行可以放在逗号之后。所以,也许像下面这样的东西会起作用:

%a.open-service{href: '#', 
                data: { service_name: service.description,
                        balance_type: "coinsurance",
                        total: service.a_total_billed - service.a_rejected - service.a_not_covered, 
                        discount: service} }
于 2012-12-18T10:19:41.737 回答
9

我相信您可以在|. 您可以在此处的 haml 文档中阅读有关它的信息。

于 2012-12-18T10:16:05.033 回答
3

您可以随时在逗号后换行。所以如果你有这个:

%div.panel
  .panel-body
    = column_chart @consumptions.filter_by_meter(params[:meter]).filter_by_appliance(params[:appliance]).where('start > ?', Time.now - 1.month).group_by_day(:start, format: '%d').sum(:power), colors: ["#7FC564"], title: 'Últimos 30 dias', library: { chartArea: { left: 60, top: 20, width: '95%', height: '85%' }, hAxis: { textPosition: 'bottom', textStyle: { fontSize: 12 }, minTextSpacing: 2 }, vAxis: { textPosition: 'left', format: '# kWh' } }

首先,您可以在每个逗号上换行以进入:

%div.panel
  .panel-body
    = column_chart @consumptions.filter_by_meter(params[:meter]).filter_by_appliance(params[:appliance]).where('start > ?', Time.now - 1.month).group_by_day(:start, format: '%d').sum(:power),
      colors: ["#7FC564"],
      title: 'Últimos 30 dias',
      library: { chartArea: { left: 60, top: 20, width: '95%', height: '85%' },
      hAxis: { textPosition: 'bottom', textStyle: { fontSize: 12 }, minTextSpacing: 2 },
      vAxis: { textPosition: 'left', format: '# kWh' } |

不过,第一行太大了!没问题。管道字符可以指定多行字符串。

它被放置在一行的末尾(在一些空格之后),这意味着所有以 | 结尾的行 将被评估为好像它们在同一行。所以你最终会得到:

%div.panel
  .panel-body
    = column_chart @consumptions.filter_by_meter(params[:meter]) |
      .filter_by_appliance(params[:appliance]) |
      .where('start > ?', Time.now - 1.month) |
      .group_by_day(:start, format: '%d') |
      .sum(:power), |
      colors: ["#7FC456"],
      title: 'Últimos 30 dias',
      library: { chartArea: { left: 60, top: 20, width: '95%', height: '85%' },
      hAxis: { textPosition: 'bottom', textStyle: { fontSize: 12 }, minTextSpacing: 2 },
      vAxis: { textPosition: 'left', format: '# kWh' } |

请注意,即使是多行块中的最后一行也应该以 | 结尾。

希望能帮助到你!

于 2014-11-22T16:26:25.467 回答
2

我刚刚遇到这个问题,我遇到了同样的问题,但选择的答案对我没有帮助。所以我只是建立在米哈伊尔的回答之上。如果你有很长的属性没有用逗号分隔(比如你正在使用 angularjs 之类的东西),你可以通过+ |在每行的末尾添加来将它分成几行(包括这个多行块中的最后一行,即棘手的部分)

像这样 :

%select{ ng: { model: "my_model_name",
             options: "myitem as myitem.formattedName for myitem in container.item_list() | " + |
                      "without: another_list.item_list()" }}                                    |

您可以在 HAML 文档中了解这一点。

于 2014-10-08T09:09:33.820 回答
2

有时 HAML 中的 Multiline 与添加 rails 代码几乎没有关系,因为某些元素需要有很多属性,例如Bootstrap Progress Bar,并且在一行上看起来很丑陋。

这让我很头疼:

.progress
  .progress-bar.progress-bar-striped.progress-bar-success{ |
                  role: "progressbar",                     |
                  aria: {                                  |
                    valuenow: "#{@percent}",               |
                    valuemin: "0",                         |
                    valuemax: "100",                       |
                  },                                       |
                  style: "width: #{@percent}%;" }          |
    = "#{@percent}%"

这是我的斗争的解决方案:

.progress
  .progress-bar { class: "progress-bar-striped progress-bar-success",
                  role: "progressbar",
                  aria: { valuenow: "#{@percent}",
                          valuemin: "0",
                          valuemax: "100", 
                  },
                  style: "width: #{@percent}%;" }
    = "#{@percent}%"

请注意,即使没有竖线,只要前一行以逗号结尾,并且没有任何行以左括号结尾,

于 2016-06-24T21:18:32.080 回答