[英]Rails - passing data hash from Ruby to JS via js.erb file
This my controller:这是我的 controller:
def show
@result = {"data"=>{"8"=>{"typeA"=>{"tier"=>[1,2],"message"=>"message"},"typeB"=>"sto"}}}
respond_to do |format|
format.js
end
end
So in show.js.erb
I want to be able to create a JS object data
that is @result['data']
.所以在
show.js.erb
我希望能够创建一个 JS object data
,即@result['data']
。 But it's really not working... The closest I can seem to get is a string representation, but then JSON.parse
fails to convert it to a JS object because all the characters have been encoded:但它真的不起作用......我似乎能得到的最接近的是字符串表示,但是
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"}}
Note I tried to do @result.to_json
, this didn't help注意我尝试做
@result.to_json
,这没有帮助
Have you tried你有没有尝试过
@result.to_json
or j
or escape_javascript
helpers?或
j
或escape_javascript
助手?
var data = JSON.parse("<%= j @result['data'] %>")
Unless you use the raw
view helper , Rails will automatically escape tags.除非您使用
raw
视图助手,否则 Rails 会自动转义标签。
This should do the trick:这应该可以解决问题:
var data = <%= raw(@result.to_json) %>;
console.log(data);
console.log(typeof data);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.