【发布时间】:2014-07-26 09:35:37
【问题描述】:
我有一个 javascript 函数(在所有页面上都可用,因为它包含在 application.js 中),它检测浏览器是否支持 Flash 并输出 true 或 false。
现在,如果为真,我想显示基于 Flash 的价格图表,如果为假,则显示基于 HTML/Javascript 的图表。
在 Haml 页面的顶部,我尝试将 javascript 函数的结果传递给 HAML,如下所示:
:javascript
if (browserHasFlashSupport())
#{showFlashChart = true}
然后在页面下方的 Haml 中使用它,如下所示:
- if showFlashChart
# show flash chart
- else
# show html/js chart
但我无法让它工作,因为 ruby 变量 showFlashChart 无论如何都是“真” - 但在控制台中,javascript 函数 browserHasFlashSupport() 返回真/假,所以我一定做错了什么.
我想这可能是最好的解决方案,直接在 HAML 中使用 javascript 函数“返回真/假”,如 - if browserHasFlashSupport(),如果可能的话,以及“正确”的做法?
我会很感激任何帮助,谢谢 :-)
PS。任何关于如何避免在我的 HAML 文件中使用内联 javascript 的提示也将非常受欢迎。
【问题讨论】:
-
haml??你是说
html?? -
不,我是说 Haml(如果你不知道 Haml,请参阅 haml.info):)
-
哎呀!对不起,我第一次听说!
-
你考虑过使用
gon吗? github.com/gazay/gon -
感谢@BenjaminSinclaire,但我需要反过来做——将变量/函数输出从 js 发送到 ruby (Haml)。
标签: javascript ruby-on-rails ruby ruby-on-rails-4 haml