#jquery #html #ruby-on-rails-3
#jquery #HTML #ruby-on-rails-3
Вопрос:
У меня есть файл .js.erb, в котором есть следующая строка
$(«#<%= «пользователь#{current_user.id }_следующий»%>»).html(«<%= escape_javascript(link_to(pluralize(@count,’tag’), user_tags_path(current_user))) %>»)
Он отображает
<a href=/users/1/tags>1 taga>
Вместо
1 тег
Раньше это работало, когда я запускал rails 3.0.4, но теперь, когда я запускаю rails 3.0.8, этого не происходит. Я обнаружил, что мне нужно добавить .html_safe
в другие места, которые я использовал auto_link
, иначе я столкнусь с той же проблемой.
Как мне сделать так, чтобы он не экранировал этот html?
Ответ №1:
Мне никогда не нравилось интерполировать ваш JS с ruby подобным образом. Это всегда приводит к трудной для понимания волосатости.
Вместо этого сбросьте свои данные в JS самостоятельно как JSON, а затем просто используйте данные как собственный javascript.
var user = <%= {
:id => current_user.id,
:path => user_tags_path(current_user),
:link_text => pluralize(@count,'tag'),
}.to_json %>;
var link = $('<a>').attr('href', user.path).text(user.link_text);
$('#user' user.id '_following').html(link);
Что, на мой взгляд, гораздо более понятно и полностью устраняет любые проблемы с HTML, поскольку HTML вообще отсутствует в вашем выражении ruby.