ruby-on-rails - ruby /rails : Decode HTML after #inspect

标签 ruby-on-rails ruby

我有一个数组:

arr = ["foo", "bar"]

要在某些 Javascript 中使用此数据,我需要像这样使用 inspect:

series: [
  {
    data: <%= arr.inspect %>
  }
]

不幸的是,这会产生:

[&quot;foo&quot;, &quot;bar&quot;]

Javascript 无法读取。我已经尝试使用 HTMLEntities.new.decodeCGI.unescapeHTML 进行解码,但仍然得到编码的双引号。

有什么想法吗?

编辑:这是在使用 ERB 的 Rails 应用中。

最佳答案

您不想为此使用 inspectinspect 用于生成人类可读的输出以用于调试、日志记录等。如果您想将数据转储到 JavaScript 中,请使用 JSON:

data: <%=r arr.as_json %>

这会给你类似的东西:

data: ["foo","bar"]

所有内容都将被正确转义和编码以便在 JavaScript 中使用(因此在 ERB 中 r 代表 raw)。

关于ruby-on-rails - ruby /rails : Decode HTML after #inspect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7757917/

相关文章:

ruby-on-rails - 与 Factory Girl 建立多态关联记录

ruby - 如何使用 Mongoid 删除特定数据库?

ruby-on-rails - Rails 和 Socket.io (node.js)

java - 将字符串加密从 Ruby 迁移到 Java

ruby - 准备调用一个封闭的数据库 rails rspec

ruby-on-rails - 无法安装调试器 gem

键删除后 ruby​​ 哈希内存泄漏

ruby-on-rails - 如何让 RSpec 在 VSCode 中与调试器 IDE 一起工作

ruby-on-rails - 多个子模型和嵌套 RABL——适用于 HTML

ruby-on-rails - 无法运行 rake Assets :precompile in rails