如何访问仅部分可访问的rails变量?

时间:2010-11-28 00:04:25

标签: javascript ruby-on-rails ruby ajax

抱歉,我是Ruby on Rails的新手。我对这张大图感到非常困惑,所以感谢你的帮助。

在我的application.html.haml中,我调用= yield,它从ranking.html.haml获取其输出。现在,后者可以访问rails变量@featured_image。

我想要做的是在页面加载时获取此rails变量@featured_image,以便我可以在此之后使用id预加载该图像和图像。

但是我的application.html.haml中的window.onload = function()无法访问@featured_image ......

我该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果从控制器设置@featured_image,则渲染管道中的所有视图都可以看到它。但是,您不一定总是认为它是可见的,因为布局可能会渲染许多页面,所以在尝试从布局中使用它之前,您需要检查它是否存在。

我建议使用辅助方法检查以确保它不是nil,然后写出正确的标记。您还可以查看content_for,它允许您标记要在布局的其他部分呈现的标记块。

答案 1 :(得分:1)

正如Chris Heald所说,@ featured_image变量是控制器上的一个实例变量,您可以在视图中访问它。要从javascript中使用它,您基本上要做的就是将它写入您的布局或部分地放在脚本块中的某个地方(这是erb,而不是haml):

<script>
  var featured_image="<%= @featured_image %>";
</script>

显然,您需要在@featured_image中添加对nil值的检查,并以适合您的应用的方式处理它,或者确保它始终设置为某个值。克里斯建议使用帮助器也是一个很好的建议,但我不确定助手需要为新手做些什么。