1

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

4

1 回答 1

3

您的问题是您正在使用=for 循环,这会导致输出表达式的结果。当您想运行 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>

顺便说一句,我个人觉得forRuby 中的这种用法令人厌恶。相反,我个人建议:

%ul 
  - users.each do |user|
    %li= user.username
于 2012-09-12T22:34:54.953 回答