如果說,在home_controller.rb裏的index方法中定義了
@data = {a: 1, b: 2}
那麼通過<%= @data %>傳到前端的js會解析成
var arr = <%= @data %>
# var arr = {:a=>1, :b=>2}
var arr = <%= raw @data %>
# var arr = {:a=>1, :b=>2}
然後呢,你嘗試在index那個action裏用
@data = {"a": 1, "b": 2}這麼定義
覺得會把:a變成"a",:b變成"b"
實際上呢 ???
var arr = <%= raw @data %>
# 解析出來的依舊是這個 var arr = {:a=>1, :b=>2}
這時候咱們就用下gem "activesupport"裏提供的stringify_keys這個方法
var arr = <%= raw @data.stringify_keys %>
# var arr = {"a"=>1, "b"=>2}
var arr = <%= raw @data.stringify_keys.to_json %>
# var arr = {"a":1,"b":2}
一切都正常了