是否可以在视图中定义新的变量?
我有这样的代码。但我得到的错误是undefined local variable or method "who"
<% @posts.each do |post| %>
<tr id="<%= dom_post_id(post) %>">
<% if post.user.id == who %>
<td><%= post.user.nickname if post.user %></td>
<td><div class="bubble me"><%= post.body %></div></td>
<td></td>
<% else %>
<td></td>
<td><div class="bubble you"><%= post.body %></div></td>
<td><%= post.user.nickname if post.user %></td>
<% end %>
</tr>
<% who = post.user.id %>
<% end %>
是的,这是可能的,但就像普通的ruby一样,在与它进行比较之前,你应该给它赋一个值。
:
<% if post.user.id == who %>
who
还没有出现在任何地方,所以ruby不知道这是什么
问题就在这里:
<% if post.user.id == who %>
您还没有定义who
。稍后使用<% who = post.user.id %>
定义它,但是当第一次进入循环时,还没有定义who
。
您需要在使用它之前定义它
在实际使用之前移动who top
<tr id="<%= dom_post_id(post) %>">
<% who = post.user.id %>
<% if post.user.id == who %>
<td><%= post.user.nickname if post.user %></td>
<td><div class="bubble me"><%= post.body %></div></td>
<td></td>
<% else %>
<td></td>
<td><div class="bubble you"><%= post.body %></div></td>
<td><%= post.user.nickname if post.user %></td>
<% end %>
</tr>
HTH