如何访问只能部分访问的rails变量?

对不起,我是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 …

我该怎么做呢??

谢谢!!

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

 

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

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

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