2016-10-31 5 views
0

Один из моих элементов html, у меня есть атрибут data, который я хочу сохранить хешем. Я использую метод to_json хэш-функции для создания JSon объекта:Разбор результатов Rails to_json в JavaScript

<%= f.select :condition, options_for_select([]), {prompt: "Select"}, {class: "form-control", 'data-array' => { 'source' => ['tv', 'letter', 'radio'], 'status' => ['error', 'return']}.to_json} %> 

Конкретно эта часть:

'data-array' => { 'source' => ['tv', 'letter', 'radio'], 'status' => ['error', 'return']}.to_json 

В браузере результат to_json выглядит следующим образом:

" {&quot;lead_source&quot;:[&quot;letter&quot;,&quot;television&quot;,&quot;radio&quot;,&quot;internet&quot;],&quot;appointment_status&quot;:[&quot;error&quot;,&quot;do_not_mail&quot;,&quot;return&quot;]}" 

Но кодирование используя &quot, а не буквенную строку '. В результате, как показано на консоли Chrome:

$(el).data('array') 
" {&quot;lead_source&quot;:[&quot;letter&quot;,&quot;television&quot;,&quot;radio&quot;,&quot;internet&quot;],&quot;appointment_status&quot;:[&quot;error&quot;,&quot;do_not_mail&quot;,&quot;return&quot;]}" 
JSON.parse($(el).data('array')); 
VM8467:1 Uncaught SyntaxError: Unexpected token & in JSON at position 3(… 

Мне нужно что-то, что я могу проанализировать. Есть to_json неправильный метод?

+1

Мне нужно использовать html_safe: Donato

ответ

0

Похоже, что ваш json убежал.

Я думаю, вы выводите его в сценарий просмотра? Если да, то попробуйте использовать J помощник - http://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptHelper.html#method-i-j

+0

Почему это экранировано со специальными символами сущности, которые не могут быть проанализированы? – Donato

+0

Я хочу сказать, почему он использует & quot; вместо – Donato

+0

На самом деле, я просто попробовал ваше предложение, и все, что он сделал, это избежать особой сущности: \ & quot; – Donato

Смежные вопросы