gpt4 book ai didi

javascript - Ruby 数组被错误地传递给 javascript 层

转载 作者:行者123 更新时间:2023-11-30 19:25:24 24 4
gpt4 key购买 nike

我有一个应用程序,我的 Controller 上有一个元素数组。我想将此 Array 传递给 Javascript View ,然后将其转换为 JSON 并进行解析。

这是我的观点:

<% content_for :page_meta do %>
<script>
const filterItems = "<%= @filter_options %>";
const productItems = "<%= @mdms_products %>";
</script>

如果我调试@filter_options。我在 IRB 上有这个:

@filter_options.class # => Array

和值:

[{:name=>"Solution Type", :uid=>"application", :component=>"HierarchicalListFilter", :props=>{:rootUrl=>"/insulation/commercial/enclosure/applications", :rootText=>"Enclosure Solutions"}, :values=>[{:name=>"Walls", :slug=>"walls", :children=>[{:name=>"Framed", :slug=>"framed", :children=>[{:name=>"Steel Stud", :slug=>"steel-stud"}, {:name=>"Wood Stud", :slug=>"wood-stud"}]}, {:name=>"Masonry", :slug=>"masonry", :children=>[{:name=>"Concrete Masonry Unit", :slug=>"concrete-masonry-unit"}]}, {:name=>"Concrete", :slug=>"concrete", :children=>[{:name=>"Precast", :slug=>"precast"}, {:name=>"Tilt-up", :slug=>"tilt-up"}, {:name=>"Cast-in-place", :slug=>"cast-in-place"}]}, {:name=>"Metal Building", :slug=>"metal-building"}, 

一切看起来都很完美吧?但是,在我的 javascript 控制台调试中,当我得到 productItems 的值时,我得到了这个奇怪的字符串:

[{:name=&gt;&quot;Solution Type&quot;, :uid=&gt;&quot;application&quot;, :component=&gt;&quot;HierarchicalListFilter&quot;, :props=&gt;{:rootUrl=&gt;&quot;/insulation/commercial/enclosure/applications&quot;, :rootText=&gt;&quot;Enclosure Solutions&quot;}, :values=&gt;[{:name=&gt;&quot;Walls&quot;, :slug=&gt;&quot;walls&quot;, :children=&gt;[{:name=&gt;&quot;Framed&quot;, :slug=&gt;&quot;framed&quot;, :children=&gt;[{:name=&gt;&quot;Steel Stud&quot;, :slug=&gt;&quot;steel-stud&quot;},

当然,当我尝试执行 JSON.parse(filterItems) 时,它会显示解析错误。

那么,什么是将 Ruby 数组传递给 Javascript 中的 Json 的更好方法?

最佳答案

Ruby 的表示法与 JavaScript 完全不同,因此您必须以正确的形式表达它并确保它不会被 HTML 转义:

<script>
const filterItems = <%= @filter_options.to_json.html_safe %>;
const productItems = <%= @mdms_products.to_json.html_safe %>;
</script>

将整个内容呈现为 JSON 并通过 AJAX 加载它可能更容易。

关于javascript - Ruby 数组被错误地传递给 javascript 层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56961945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com