繁体   English   中英

Ruby on Rails呈现对实例变量的访问

[英]Ruby on Rails rendering access to instance variables

当我渲染部分视图或渲染未直接映射到控制器的视图时,该其他视图是否可以访问控制器的实例变量?

实际上,您不会直接访问控制器动作中存在的控制器实例变量,而发生的是Rails克隆它们并将它们传递给视图。 然后,您可以通过这些克隆访问它们的值。

在请求期间,您只能在控制器操作的对应视图中访问这些克隆的变量。 但是,您的应用程序为每个用户都有一个会话 ,您可以在其中存储少量数据,这些数据将在请求之间保留。

是的,Rails允许多个视图共享控制器中定义的实例变量。 但是,您应该避免在多个视图之间共享实例变量,这是因为实例变量可能会在视图内部更改,并且不具有要在下一个视图中显示的原始值。

根据本文中的Ryan Bates,以下是使用渲染访问实例变量的准则( Rails:局部对象是否应该知道实例变量? ):

  1. 切勿创建仅在部分之间共享实例变量的实例变量。 通常这意味着您将只共享控制器资源对象。

  2. 如果partial与资源名称相同,则使用<%= render @item%>将其作为本地传递。

  3. 如果部分内容将在多个控制器之间共享,则仅使用本地。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM