如何正确使用转义javascript for<%= link_to%>?

时间:2012-05-18 21:26:21

标签: javascript jquery ruby-on-rails ruby

我有一个带有以下代码的js.erb文件,但我似乎无法正确转义javascript中的link_to帮助方法。我认为它与Edit周围的引号有关。

$('#microposts').prepend('<div class="micropost"><h3>' +  "<%= j @user.email %>" + '</h3>    <h3>Posted ' + "<%= j time_ago_in_words(@micropost.created_at) %>" + ' ago</h3><p>' +  "<%= j     @micropost.content %>" + '</p><p>' + "<%= j link_to "Edit",      edit_user_micropost_path(@micropost) %>" '</p></div>');
$('#new_micropost')[0].reset();
$('#micropost_count').html('<%= Micropost.count %>');

另外,我会如何设置动画?

1 个答案:

答案 0 :(得分:3)

这可能不是你正在寻找的答案,但我谦虚地认为这不是正确的方法,而且正确逃避这种方法的困难只是方法太复杂的症状。 / p>

我知道你在这里做的事情实际上可能与课程相提并论(根据一些Rails开发人员的说法),但我认为这是一种效率低下,更糟糕,太复杂(因而难以维护)的问题。据推测,已经进行了一些AJAX调用并接收到这个动态生成的响应,其中包含用JavaScript实现的命令(用于执行某些操作的命令;在这种情况下,用于修改DOM的命令)。为什么不在页面最初加载时加载一个静态的JavaScript块,知道如何获取一小段DATA并正确呈现它?

然后你要做的是返回JSON而不是命令式的脚本块。您的静态JavaScript方法将通过以下方式修改DOM:

  1. 复制隐藏在该页面上的易于维护的HTML片段。
  2. 使用您从AJAX调用获得的JSON结构中的数据对副本执行查找/替换以“填充空白”。
  3. 使用新的HTML代码段添加集合。
  4. 认为这样更简单,维护更容易。