无法将变量传递给部分变量

时间:2014-10-17 08:05:41

标签: ruby-on-rails ruby-on-rails-4

因此,我希望在_index页图片下显示评论的show部分内容。

我在媒体视图中渲染部分目前是这样的:

<div id="comments">
    <%= render partial: 'comments/index'  %>
</div>

我的评论控制器看起来像这样:

def index
        @comments = Comment.all
        render partial: 'comments/index', locals: { :comments => @comments }
end

我用来重新加载的coffescript代码如下所示:

setInterval (=> $('#comments').load('/comments')), 1000

现在在我看来,当我尝试访问我发送给部分的:comments变量时,我无法做到。它不包含任何值。

如何才能将值正确地提供给那部分?

值得注意的是,我的部分也无法访问实例变量@comments

1 个答案:

答案 0 :(得分:2)

您要从图片index视图中部分呈现评论show

此处使用的操作是picture show。在将注释部分呈现为部分时,它将调用注释控制器。这就是为什么@comments变量无法访问的原因。

因此,请在图片控制器

中定义@comments
def show
  @picture = Picture.find(params[:id])
  @comments = @picture.comments
end

然后将它们从图片/显示视图传递到您的部分

<div id="comments">
  <%= render partial: 'comments/index', :locals => :comments => @comments  %>
</div>