0

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

3 回答 3

4

是的,这是可能的,但就像普通的 ruby​​ 一样,你应该给它一个值,然后再与它进行比较。

这里:

<% if post.user.id == who %>

who还没有在任何地方看到,所以红宝石不知道这是什么。

于 2013-01-10T17:23:31.047 回答
1

问题在这里:

<% if post.user.id == who %>

你还没有定义who。您稍后使用 定义它<% who = post.user.id %>,但是当第一次进入循环时,who尚未定义。

您需要在使用它之前定义它。

于 2013-01-10T17:23:37.090 回答
1

在实际使用之前将 who 移到顶部

<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>

高温高压

于 2013-01-10T17:40:45.867 回答