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>

余談ですが、個人的にはfor、Ruby でのこの使用法は忌まわしいものだと思います。代わりに、私は個人的にお勧めします:

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