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

这不是party_controller 有什么后果吗?

4

1 回答 1

11

我已经尝试过类似下面的方法并且它有效

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

我可以像访问一样访问party.name。局部变量以此处的部分名称命名party

注意:我假设你的两个部分都是parties_controller. 所以这应该有效。

更新: 这是我再次尝试过的

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