.js.erb文件中转义的html问题

时间:2011-06-13 23:42:05

标签: jquery html ruby-on-rails-3

我有一个.js.erb文件,其中包含以下行

  

$(“#<%=   “用户#{current_user.id} _following”   %> “中。)HTML(” <%=   escape_javascript(的link_to(复数化(@数, '标签'),   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 个答案:

答案 0 :(得分:1)

我从不喜欢用这样的ruby插入你的JS。它总是导致很难理解毛茸茸。

相反,将数据作为JSON自己转储到JS中,然后简单地将数据用作本机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表达式中。