这个问题与这个问题相似,但有一个额外的皱纹:
假设您正在使用如下代码构建一个以逗号分隔的链接列表:
- foos.each_with_index do |foo, i|
= ', ' if i > 0
= link_to foo.name, foo
如果逗号前面没有空格,你怎么做?我看不到任何方法可以使用现有的鳄鱼运算符或surround
/ precede
/来做到这一点succeed
。
有没有办法重写循环,以便您可以使用这些运算符?
这个问题与这个问题相似,但有一个额外的皱纹:
假设您正在使用如下代码构建一个以逗号分隔的链接列表:
- foos.each_with_index do |foo, i|
= ', ' if i > 0
= link_to foo.name, foo
如果逗号前面没有空格,你怎么做?我看不到任何方法可以使用现有的鳄鱼运算符或surround
/ precede
/来做到这一点succeed
。
有没有办法重写循环,以便您可以使用这些运算符?
HAML 带有一个succeed
可以在这里使用的方法:
- foos.each do |foo|
= succeed (foo == foos.last) ? '' : ', ' do
= link_to foo.name, foo
使用字符串插值或表达式,您可以有条件地显示空字符串或带空格的逗号。
由于 link_to 只是一个返回字符串的助手,因此您可以在单个语句中执行此操作:
- foos.each_with_index do |foo, i|
= link_to(foo.name, foo) + (i < foos.length ? ', ' : '')
但是,您可能希望将此代码提取到帮助程序中并编写测试。