Ruby/Rails:在#inspect之后解码HTML

imd*_*rek 1 ruby ruby-on-rails

我有一个数组:

arr = ["foo", "bar"]
Run Code Online (Sandbox Code Playgroud)

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

series: [
  {
    data: <%= arr.inspect %>
  }
]
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会产生:

[&quot;foo&quot;, &quot;bar&quot;]
Run Code Online (Sandbox Code Playgroud)

这是Javascript无法读取的.我尝试使用HTMLEntities.new.decode和解码CGI.unescapeHTML,但仍然得到编码的双引号.

有任何想法吗?

编辑:这是在使用ERB的Rails应用程序中.

mu *_*ort 6

您不想使用inspect它,inspect用于生成用于调试,日志记录等的人类可读输出.如果要将数据转储到JavaScript中,请使用JSON:

data: <%=r arr.as_json %>
Run Code Online (Sandbox Code Playgroud)

这会给你一些类似的东西:

data: ["foo","bar"]
Run Code Online (Sandbox Code Playgroud)

并且所有内容都将被正确转义和编码以便在JavaScript中使用(因此在ERB中r为for raw).