是否可以在视图中定义新的变量?



是否可以在视图中定义新的变量?
我有这样的代码。但我得到的错误是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

相关内容

  • 没有找到相关文章