[英]Rails - passing data hash from Ruby to JS via js.erb file
这是我的 controller:
def show
@result = {"data"=>{"8"=>{"typeA"=>{"tier"=>[1,2],"message"=>"message"},"typeB"=>"sto"}}}
respond_to do |format|
format.js
end
end
所以在show.js.erb
我希望能够创建一个 JS object data
,即@result['data']
。 但它真的不起作用......我似乎能得到的最接近的是字符串表示,但是JSON.parse
无法将其转换为 JS object 因为所有字符都已编码:
console.log("<%= @result['data'] %>")
var data = JSON.parse("<%= @result['data'] %>")
console.log(data)
ACTUAL OUTPUT
> {"8":{"typeA":{"message":"message","tier":[1,2]},"typeB":"sto"}}
> Uncaught SYntaxError: Unexpected token & in JSON at position 1
DESIRED OUTPUT (for second console.log)
> {"8":{"typeA":{"tier":[1,2],"message":"message"},"typeB":"sto"}}
注意我尝试做@result.to_json
,这没有帮助
你有没有尝试过
@result.to_json
或j
或escape_javascript
助手?
var data = JSON.parse("<%= j @result['data'] %>")
除非您使用raw
视图助手,否则 Rails 会自动转义标签。
这应该可以解决问题:
var data = <%= raw(@result.to_json) %>;
console.log(data);
console.log(typeof data);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.