我将json渲染为html数据属性并使用jquery.data读取属性。我期待$(' [data-attribute]')。数据('属性')来解析json并返回一个对象,但它会间歇性地返回一个字符串。
location.html.erb
<div data-location="<%= render 'location_json' %>">
location_json.erb
<%= @location.to_json(
only: [:id, :name, :lat, :lng],
method: [:display_name]) %>
location.js
var location = $('[data-location]').data('location')
我怀疑编码/逃避问题,有什么想法吗?
答案 0 :(得分:0)
ERB间歇性地添加换行符,导致jquery字符串无法解析json字符串。例如,这解析正确:
<div data-location="{name":"Bandido's"}">
但这没有(请注意在换行符上加上双引号):
<div data-location="
{name":"Bandido's"}
">
要阻止ERB添加换行符,请在结束ERB标记之前添加短划线
-%>
解决方案:
<div data-location="<%= render 'location_json' -%>">