我有一个 Rails 应用程序,它提供许多 View ,其中包括来自数据库的特定数据,由一些 javascript 操作,特别是与 Chartjs 一起使用。
我探索过的选项是:
- 使用 ajax 调用从服务器提取数据。我不喜欢这个,因为用户没有更改任何数据,我在呈现页面时可以访问所有数据,应该有更好的方法。
- 使用
<script>
View ERB 中的标签,并简单地让 ERB 插入变量。这看起来有点老套,而且绝对没有利用我所有漂亮的 haml。但这很容易,并且允许我将 javascript 变量放在页面上,然后可以在 document.onload 之后获取这些变量。 - 刚。伟大的 gem ,非常容易。但这真的需要 gem 吗?
我觉得解决方案似乎应该涉及 Assets 管道和某种轨道插值,但我似乎无法非常干净地完成这项工作。解决此问题的优雅 Rails 4 方法是什么?
谢谢大家!
最佳答案
有很多方法可以将数据从服务器端传递到 javascript,我将在下面列出两种最常见的(不使用 gem 或其他外部工具):
使用您描述的第二种方法,并在 javasscript 中插入 ERB 标记。这是丑陋的、老掉牙的,甚至离最佳实践还差得很远。
使用数据属性。您可以修改 HAML 以包含其他属性,例如“data-my-variable”,并通过 javascript 访问它(使用 jQuery 的示例:
$(element).data("my-variable")
) .
在我看来,数据属性方法是最简洁的方法,这正是数据属性的目的。
现在,我不知道 HAML,我以前只用过 ERB,但我发现了 this answer by Mandeep ,其中解释了如何将数据属性添加到 HAML:
%a{"data-my-variable" => "my data", href: "#"}
或
%a{href: "#", :data => {:my_variable => "my data"}}
编辑:抱歉,我发现了您的问题以及其他较新的问题,我只是认为这是最近的问题,而不是一年多前的问题:)
关于javascript - 如何在 Rails 4 的 javascript 中包含 ruby 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22201837/