2015-05-22 3 views
0

Я отрисовка json в атрибут данных html и использование jquery.data для чтения атрибута. Я ожидаю $ ('[data-attribute]'). Data ('attribute') для синтаксического анализа json и возврата объекта, но он периодически возвращает строку.jquery.data возвращает строку 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') 

I подозревать проблему кодирования/экранирования, любые идеи?

ответ

0

ERB периодически добавлял новые строки, в результате чего json-строка, которую jquery.data не анализировала. Например, это корректно распознано:

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

Но это не (примечания trailling двойных кавычек на новой строке):

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

Чтобы предотвратить Еврорадио от добавления новой строки, добавить щепотку до закрытия ERB тега

-%> 

Решение:

<div data-location="<%= render 'location_json' -%>"> 
Смежные вопросы