我正在从数组对象中打印一个列表,当它完成遍历数组中的所有项目时,它会在HTML中打印单词“true”。
代码如下所示:
%ul
= for i in users
%li
= i.username
打印:
username1
username2
username3
true
在html输出中看起来像这样:
<ul>
<li>username1</li>
<li>username2</li>
<li>username3</li>
true
</ul>
为什么true
会被打印出来,我该如何摆脱它?
答案 0 :(得分:3)
您的问题是您正在使用=
进行循环,这会导致输出表达式的结果。如果要运行Ruby代码但没有将值发送到输出中,请改用-
:
%ul
- for i in users
%li
= i.username
这可以更简单地写成:
%ul
- for i in users
%li= i.username
证明:
C:\>haml
- users = %w[user1 user2 user3]
%ul
- for name in users
%li= name
^Z
<ul>
<li>user1</li>
<li>user2</li>
<li>user3</li>
</ul>
顺便说一句,我个人觉得Ruby中for
的这种用法令人憎恶。相反,我个人建议:
%ul
- users.each do |user|
%li= user.username