5

これはパーシャルをレンダリングするための私のコードです(@partiesコレクションは正しく生成されています、私はそれをテストしました):

        <% @parties.each do |party| %>
            <div class="item">
              <%= render 'parties/party', :object => party  %>
            </div>
        <% end %>

そして、これは部分的なコードです:

<%= party.name %>

ただし、次のエラーが発生します。

undefined method `name' for nil:NilClass

私は私の知恵の終わりにいます、誰か助けてください:-|

また、これは、コントローラーがパーシャルを含むビューをレンダリングするためのコードです(コントローラーはdefault_controllerと呼ばれます)。

def index
    @parties = Party.all
end

これがpartys_controllerではないということは何か影響がありますか?

4

1 に答える 1

11

私は以下のようなものを試しましたが、うまくいきました

<%= render :partial => 'party', :object => party  %>

のようにアクセスできますparty.name。ローカル変数は、ここにある部分的な名前にちなんで名付けられていpartyます。

注:両方のパーシャルがであると想定していますparties_controller。したがって、これは機能するはずです。

更新: これがiveが再試行したものです

class PostsController < ApplicationController
    #... ...
    def index
        @posts = Post.all
        @comments = Comment.all #<---- Loading comments from PostsController
        #... ...
    end  
end

#views/posts/index.html.erb

<% @comments.each do |comment| %>
    <%= render :partial=>"comments/comment", :object=>comment %>
<% end %>

#views/comments/_comment.html.erb

<%= comment.body %>

そしてその働き:)

于 2012-09-25T13:35:09.943 に答える