部分动作继承 rails

Partials action inheretance rails

我问了 here 关于为局部创建动作的问题。有人建议我要么在视图中包含一个局部视图(局部视图的用途),要么使其成为自己的视图(不再是局部视图)。这让我提出了一个不同的问题:

部分是否从显示它们的视图继承操作?

编辑以回答第一条评论:

我的意思是,如果我有一个索引操作和索引视图,并且我在那个视图中显示了一个部分,这个部分会理解我为索引操作定义的变量吗?

好的,

基于编辑:

理论上,您的部分知道控制器中定义的实例变量。所以你可以简单地在局部调用它们。 然而,将它们作为变量实际传递给局部变量更常见,也是一种很好的做法:http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials 请参阅选项 3.4.4:传递局部变量。

这使您的局部更有用。 否则,如果您在所有使用此部分的控制器中重新声明变量,则只能重用部分。

是的,作为索引模板一部分的部分将知道与索引相同的变量。

请记住,让局部变量依赖于实例变量不是好的做法,因为它们可以在任何地方重复使用!为了消除依赖性,将它们作为局部变量发送到局部

所以你的 index.html.slim(或 html,或 erb,无论你使用什么),可以有:

render 'some_partial', items: @products

或其他地方,您可以称它为:

render 'some_partial', items: @active_products

或作为完整符号:

render partial: 'some_partial', locals: { items: @products }

希望你明白了 ;)