0

我有一个带有以下代码的 js.erb 文件,但我似乎无法正确转义 link_to 辅助方法的 javascript。我认为这与 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 %>');

在旁注中,我将如何制作动画?

4

1 回答 1

3

这可能不是您正在寻找的答案,但我会谦虚地建议这不是正确的方法,而正确逃避它的困难只是该方法过于复杂的症状。

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

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

  1. 复制嵌入该页面的隐藏的易于维护的 HTML 片段。
  2. 在副本上进行查找/替换以使用您从 AJAX 调用获得的 JSON 结构中的数据“填充空白”。
  3. 将新的 HTML 片段添加到集合之前。

认为这会更简单,维护更容易。

于 2012-05-18T21:56:22.597 回答