jquery.data返回json字符串而不是object

时间:2015-05-22 22:52:49

标签: javascript jquery ruby-on-rails json erb

我将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')

我怀疑编码/逃避问题,有什么想法吗?

1 个答案:

答案 0 :(得分:0)

ERB间歇性地添加换行符,导致jquery字符串无法解析json字符串。例如,这解析正确:

<div data-location="{name&quot;:&quot;Bandido&#x27;s&quot;}">

但这没有(请注意在换行符上加上双引号):

<div data-location="
{name&quot;:&quot;Bandido&#x27;s&quot;}
">

要阻止ERB添加换行符,请在结束ERB标记之前添加短划线

-%>

解决方案:

<div data-location="<%= render 'location_json' -%>">