HAML for循环在HTML渲染中打印单词“true”

时间:2012-09-12 22:32:00

标签: ruby haml

我正在从数组对象中打印一个列表,当它完成遍历数组中的所有项目时,它会在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会被打印出来,我该如何摆脱它?

1 个答案:

答案 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