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

実際に使用する前に、whotopを移動します

<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

于 2013-01-10T17:40:45.867 に答える
1

問題はここにあります:

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

まだ定義whoしていません。後で で定義し<% who = post.user.id %>ますが、最初にループに入った時点では、whoはまだ定義されていません。

使用する前に定義する必要があります。

于 2013-01-10T17:23:37.090 に答える