是否可以在视图中定义新变量?
我有这样的代码。但我收到错误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 %>
答案 0 :(得分:4)
是的,这是可能的,但就像普通的红宝石一样,你应该在比较它之前给它一个值。
下面:
<% if post.user.id == who %>
who
还没有在任何地方看到过,所以ruby不知道这是什么。
答案 1 :(得分:1)
问题在于:
<% if post.user.id == who %>
您尚未定义who
。您可以稍后使用<% who = post.user.id %>
定义它,但是首次输入循环时,尚未定义who
。
在使用之前,您需要先定义它。
答案 2 :(得分:1)
在实际使用之前移动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