在视图中加载多个部分模板时出现问题

时间:2011-06-15 23:21:13

标签: ruby-on-rails ruby ruby-on-rails-3 class partial-views

我正在使用Ruby on Rails 3.0.7,我想了解如何处理以下情况以避免在加载视图时覆盖istance变量@photo

在我的视图文件中,我有:

<div>
  <%=
    render :partial => 'user/photos',
           :locals  => {
             :photo => @photo = 'test_photo1.jpg',
           }
  %>
</div>

<div>
  <%=
    render :partial => 'user/photos',
           :locals  => {
             :photo => @photo = 'test_photo2.jpg',
           }
  %>
</div>

如果我加载上面的视图,我在输出时有一个奇怪的行为。当页面加载时,@photo类被覆盖(由第二个渲染语句)的接缝。当然,如果我只做一次渲染就可以了。

如何正确传递变量来解决上述问题?

注意:我无法更改@photo名称。也就是说,两个部分模板必须相同。


我也尝试删除@photo变量

这个版本
<div>
  <%=
    render :partial => 'user/photos',
           :locals  => {
             :photo => 'test_photo1.jpg',
           }
  %>
</div>

<div>
  <%=
    render :partial => 'user/photos',
           :locals  => {
             :photo => 'test_photo2.jpg',
           }
  %>
</div>

但仍然无效。

1 个答案:

答案 0 :(得分:0)

<div>
  <%=
    render :partial => 'user/photos',
           :locals  => {:photo = 'test_photo2.jpg'}
  %>
</div>

试试看,我不知道为什么你有:photo => @photo = 'test_photo2.jpg'

另见Rails guides on partials。他们真的让你很好地掌握了基础知识。