2014-12-24 1 views
0

Мне нужна помощь в отображении вывода метода помощников рельсов внутри тегов скрипта в файле макета application.html.erb. Я поставил следующий код непосредственно перед закрывающей HTML тега:Ruby on Rails Вставить Ruby-код в Javascript внутри файла приложения Erb

<script> 
    App.ready = function() { 
     App.initApp(jQuery.parseJSON("<%= current_user_json %>")); 
    } 
</script> 

Этого current_user_json является вспомогательным методом, который находится в файле контроллер приложения.

Выход выше код создает в браузере (исходный код страницы просмотра) является:

<script> 
    App.ready = function() { 
     App.initApp(jQuery.parseJSON("{&quot;id&quot;:3,&quot;email&quot;:&quot;[email protected]&quot;,&quot;username&quot;:null}")); 
    } 
</script> 

Надлежащий вывод должен быть:

<script> 
    App.ready = function() { 
     App.initApp(jQuery.parseJSON('{"id":3,"email":"[email protected]","username":null}')) 
    } 
</script> 

Если кто-то может мне помочь, я буду очень быть освобожденным от этой проблемы, которую я пытаюсь решить за последние пару дней.

+1

Значит ли '<% = current_user_json.html_safe%>' работу? – spickermann

+0

Привет @spickermann ваш ответ правильный! – codingbear

ответ

1

Изменить это:

<%= current_user_json %> 

Для этого:

<%= current_user_json.html_safe %> 

Heads вверх, что вы должны обеспечить ваш JSON должным образом спасся. Например, если у вашего current_user_json есть поле с цитатой в нем, вы должны избежать этой цитаты. Если вы не убегаете, то то, что вы делаете, довольно типичный вектор атаки для хакеров, поэтому продолжайте с осторожностью.

+0

Привет @joelparkerhenderson, спасибо за быстрый, полезный и точный ответ. Я не слишком знаком с «вектором атаки». Не могли бы вы помочь мне указать на какой-то ресурс в Интернете, где я могу читать и понимать больше о них, чтобы защитить код от него. – codingbear

+0

Добро пожаловать. Чтобы лучше понять вектор атаки, основная идея заключается в том, что вы смешиваете разные типы строк, а некоторые символы могут иметь особые значения, которые мешают некоторым строкам. Google для «Подделка запросов на межсайтовый запрос», и вы увидите много примеров. – joelparkerhenderson

2

Попробуйте

<%= raw current_user_json.to_json %> 
+0

Привет @ pkrawat1 спасибо за ваш замечательный ответ, ваш ответ был бы правильным, если бы хелпер-метод не был установлен для вывода json. Так радуйся, и спасибо еще раз. – codingbear

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