我在我的rails项目中使用HAML作为我的html模板。 我想弄清楚它是否可以划分很长的一行并使其成为几行:
%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和一些数据属性的锚点,并使其成为一行不会是一个漂亮的代码。 但是,当我像上面那样做时,我得到一个错误:“不平衡的括号。”
任何帮助?
答案 0 :(得分:30)
根据Haml documentation,可以在逗号后面添加新行。所以,也许类似下面的东西会起作用:
%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} }
答案 1 :(得分:8)
我相信你可以在|
的帮助下实现这一目标。您可以在haml文档here中阅读它。
答案 2 :(得分: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' } |
请注意,即使多行程序段中的最后一行也应以|结尾。
希望它有所帮助!
答案 3 :(得分:2)
我刚刚遇到这个问题,我遇到了同样的问题,但选定的答案并没有帮助我。所以我只是建立在米哈伊尔的答案之上。如果你有很长的属性没有用逗号分隔(比如你使用像angularjs这样的东西),你可以通过在每行的末尾添加+ |
将它分成几行(包括这个多行块中的最后一行,这是一个棘手的部分)。
就像这样:
%select{ ng: { model: "my_model_name",
options: "myitem as myitem.formattedName for myitem in container.item_list() | " + |
"without: another_list.item_list()" }} |
您可以阅读此in HAML documentation。
答案 4 :(得分:1)
有时候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}%"
请注意,即使没有竖线条线,只要前一行以逗号结尾,并且没有以开放括号结束的行,