我有一个应用程序,其中我的控制器上有一个元素数组。我想将此数组传递给 Javascript 视图,然后将其转换为 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=>"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"},
当然,当我尝试执行 JSON.parse(filterItems) 时,它会显示解析错误。
那么,将 Ruby 数组传递给 Javascript 中的 Json 的更好方法是什么?