2013-10-10 2 views
3

Недавно я обновляю одно из приложений с рельсами от версии 2.3 до версии 3.2. И я замечаю странное поведение в javascript, написанном в файлах html.erb. Этого никогда раньше не было с другими приложениями, которые я обновил.Rails upgrade от 2,3 до 3.2 javascript рендеринга как текст

Я обновление до Руби 1.9.3 Rails 3.2.14

В настоящее время JQuery версия 1.4, и я бы обновить его 1.9 или 1.10, как только приложение полностью портирован.

В этом проблема. Всякий раз, когда у нас есть JS, написанный в шаблонах, и в какой-то момент JS имеет большее условие, тогда любой JS-код, написанный после этого, отображается как текст на странице без каких-либо ошибок JS в firebug. Пожалуйста, присмотритесь к экрану.

И когда я удаляю этот JS-код в файл .js, эта проблема исчезает. Я думаю, что что-то нужно для разбора шаблонов ERB, поскольку тот же код отлично работает в приложении rails 2.3.

enter image description here

В скриншоте код JS вынесенное что-то вроде

" 0) jQuery("#li_" + caab_jurisdiction_name).show();..." 

начинается WTH что-то вроде этого

"if (jQuery("#mortgage_product_group_econveyance_editions").attr("value").indexOf(caab_jurisdiction_value) > 0) jQuery("#li_" + caab_jurisdiction_name).show();..." 

ответ

0

Rails 3.0+ имеет защиту XSS по умолчанию, в то время как в Rails 2.3 вам нужно использовать хелпер h в порядке его использования.

Чтобы избежать этого, вы можете использовать String # html_safe или вспомогательное raw.

Подробнее об этом можно узнать на этой странице railscasts http://railscasts.com/episodes/204-xss-protection-in-rails-3.

+0

Нет, у вас нет вопросов. Это не рубиновая строка, это JS, написанная в файлах представлений. Это простой HTML-код с кодом javascript в теге скрипта. –

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