用循环删除Haml中的空格

时间:2012-06-28 22:34:55

标签: ruby-on-rails haml

这个问题与此类似,但有一个额外的皱纹:

Auto-removing all newlines from Haml output

假设您正在使用以下代码构建逗号分隔的链接列表:

- foos.each_with_index do |foo, i|
  = ', ' if i > 0
  = link_to foo.name, foo

如果不在逗号前面加空格,你怎么做?对于现有的鳄鱼操作员或surround / precede / succeed,我认为没有办法做到这一点。

是否有某种方法可以重写循环以便您可以使用这些运算符?

2 个答案:

答案 0 :(得分:2)

HAML附带succeed方法,可在此处使用:

- foos.each do |foo|
  = succeed (foo == foos.last) ? '' : ', ' do
    = link_to foo.name, foo

使用字符串插值或表达式,您可以有条件地显示空字符串或带空格的逗号。

答案 1 :(得分:1)

由于link_to只是一个返回字符串的助手,因此您可以在一个语句中执行此操作:

- foos.each_with_index do |foo, i|
    = link_to(foo.name, foo) + (i < foos.length ? ', ' : '')

但是,您可能希望将此代码提取到帮助程序中并编写测试。