1

我有一个 .js.erb 文件,它需要根据关联控制器中使用的变量替换视图的跨度。我想不出正确的符号来让电话工作。 @i在控制器中分配。这是 .js.erb 调用:

$("span#remove_name_" + <%= @i %>).html("<%= escape_javascript(render(:partial => 'remove_position'))%>");

例如,我希望替换的跨度名称是remove_name_42

谢谢。

4

1 回答 1

2

我只讲这部分代码:$("span#remove_name_" + <%= @i %>)

您必须了解具有双扩展名的文件是如何工作的。在这种情况下,您有一个“.js.erb”类型的文件,这意味着您的文件将首先由 erb 解释,结果将是一个将由浏览器解释的 js 文件。两种解释是分开进行的。

关于 erb 解释:请记住,这只是某种“文本处理”。如果您尝试逐步弄清楚附加的内容:

  1. 你的代码是$("span#remove_name_" + <%= @i %>)
  2. @i 值为“示例”
  3. erb 将这部分代码替换为<%= @i %>if @i 的值,即 'example'
  4. 生成的 js 文件将是:$("span#remove_name_" + example)

如果您的 js 代码声明了一个名为“example”的变量,并且生成的代码$("span#remove_name_" + example)是您所期望的,那么这很好。

但是,如果您的 js 代码未声明“示例”变量,并且您正在期待此代码$("span#remove_name_example"),因为您正在搜索 id 为“remove_name_example”的跨度,那么必须这样做:

  1. 你的代码是$("span#remove_name_<%= @i %>")
  2. @i 值为“示例”
  3. erb 将这部分代码替换为<%= @i %>if @i 的值,即 'example'
  4. 生成的 js 文件将是:$("span#remove_name_example")

看看我们如何在字符串中移除+和移动?<%= @i %>再次考虑“文本处理”并记住 erb 将变量替换为其值。

于 2013-05-23T23:24:57.393 回答