我对从控制器传递变量到视图有疑问。 什么是最佳实践,性能,最后在本地传递变量或将变量作为实例变量传递的优点和缺点是什么?例如:
controller.rb
@string = "Some string"
然后在视图中:
view.erb
<%= @string %>
或更好地传递
controller.rb
render some_path,
:locals => {
:string => 'aww',
}
然后在内部视图中:
<%= string %>
对象,布尔值如何?性能有什么不同?什么是更好的做法?
此致
答案 0 :(得分:4)
在Rails中,将实例变量传递给视图是最佳做法。 Rails开发人员已经习惯了它,它很熟悉,它的输入较少,而且很有效。
然而,我个人的偏好是将locals
传递给render
,因为它会使您的视图变量更加明确。它还有一个好处,就是提出一个没有方法&#34;如果你错误输入一个变量而不是得到一个&#34; nil&#34;使用实例变量时的异常。
我不确定无论哪种方式,性能都会有太大差异。运行一些基准测试可能会很有趣。但是如果你正在使用Rails,那么查看渲染速度可能不是你最关心的问题。
请注意,如果您在控制器中使用实例var来记忆方法的结果(比如缓存昂贵的计算),那么实例var&#34;泄漏&#34;进入你的视野。您可能在视图中不需要它,但您仍然可以获得它(因为Rails会将控制器中的任何实例变量暴露给您的视图)。因此,传递本地变量在沟通中更为明确&#34;我的观点依赖于这个变量&#34;)