我问了一个关于为部分创建动作的问题here。有人建议我要么在视图中包含部分(部分用于),要么使其成为自己的视图(不再是部分视图)。这让我提出了一个不同的问题:
部分是否从显示它们的视图中继承动作?
编辑以回答第一条评论:
我的意思是,如果我有一个索引操作和索引视图,并且我在该视图中显示部分,部分是否会理解我为索引操作定义的变量?
答案 0 :(得分:0)
好,
基于编辑:
理论上,你的部分知道控制器中定义的实例变量。所以你可以简单地在局部中调用它们。 然而,实际上将它们传递给部分变量是更常见,更好的做法:http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials 请参阅选项3.4.4:传递局部变量。
这使您的部分更有用。 否则,如果使用此部分重新声明所有控制器中的变量,则只能重复使用partial。
答案 1 :(得分:0)
是的,您偏向索引模板的一部分将知道与索引相同的变量。
请记住,保持部分依赖于实例变量不是好习惯,因为它们可以在任何地方重复使用!为了删除依赖关系,将它们作为局部变量发送到局部变量
所以你的index.html.slim(或html,或erb,无论你用什么)都可以:
render 'some_partial', items: @products
或您可能称之为的其他地方:
render 'some_partial', items: @active_products
或作为完整的表示法:
render partial: 'some_partial', locals: { items: @products }
希望你有了主意;)