javascript - 如何在 Rails 4 的 javascript 中包含 ruby​​ 变量?

标签 javascript ruby-on-rails-4 asset-pipeline haml erb

我有一个 Rails 应用程序,它提供许多 View ,其中包括来自数据库的特定数据,由一些 javascript 操作,特别是与 Chartjs 一起使用。

我探索过的选项是:

  1. 使用 ajax 调用从服务器提取数据。我不喜欢这个,因为用户没有更改任何数据,我在呈现页面时可以访问所有数据,应该有更好的方法。
  2. 使用<script> View ERB 中的标签,并简单地让 ERB 插入变量。这看起来有点老套,而且绝对没有利用我所有漂亮的 haml。但这很容易,并且允许我将 javascript 变量放在页面上,然后可以在 document.onload 之后获取这些变量。
  3. 刚。伟大的 gem ,非常容易。但这真的需要 gem 吗?

我觉得解决方案似乎应该涉及 Assets 管道和某种轨道插值,但我似乎无法非常干净地完成这项工作。解决此问题的优雅 Rails 4 方法是什么?

谢谢大家!

最佳答案

有很多方法可以将数据从服务器端传递到 javascript,我将在下面列出两种最常见的(不使用 gem 或其他外部工具):

  1. 使用您描述的第二种方法,并在 javasscript 中插入 ERB 标记。这是丑陋的、老掉牙的,甚至离最佳实践还差得很远。

  2. 使用数据属性。您可以修改 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/

相关文章:

javascript - 具有 Assets 管道的特定于语言环境的 javascript 文件

javascript 查找调用者 div。 (或任何其他 dom 对象)

mysql - 在 Rails 中使用 where 子句在 mysql 中使用正则表达式

ruby - Capybara 和 Rails 的 have_content 规范未能测试是否出现部分消息

ruby-on-rails - 通过 twitter-bootstrap-rails gem 升级到 bootstrap 2.0.1 后 Heroku 部署失败

ruby-on-rails - rails 3.1 : alias/images to/assets directory

javascript - 使用 Angular 操作具有不同 id 的多个 div

javascript - 如何检测客户的计算机语言/或其他什么以便自动更改我的网站中的语言

javascript - jQuery - 返回功能不会立即触发

ruby-on-rails - Rails API 中创建或更新操作的正确 HTTP 方法是什么?