'<%= j%>'的含义标记在红宝石视图中

时间:2013-10-15 19:59:57

标签: ruby-on-rails ruby

我在ruby视图文件中看到了标记<%=j some-variable %>,我想知道是否有人能告诉我它中的j代表什么?我知道<%= %>用于打印ruby,<% %>用于在视图中使用ruby代码。

3 个答案:

答案 0 :(得分:5)

在Ruby on Rails视图中,j()escape_javascript()的别名:

  

转义回车以及JavaScript细分的单引号和双引号。

这通常用于DOM操作,例如,当您想渲染另一个ERB模板并将该输出用作JS函数的参数时。

如果您使用的是jQuery,那么在创建新记录后,您的JS响应中可能会有类似的内容:

$('ul#items').append('<%= j render(resource) %>');

这将呈现资源的相应部分,转义结果以使其可以用作Javascript字符串,将该转义字符串括在引号中,然后将该最终字符串附加到DOM节点。

<强>更新

(这来自我在讨论其他答案之一时的评论。)

许多Ruby开发人员在j旁边写<%=,没有任何分隔的空格。有些人写<%=j render 'something' %>,但通常至少包含内部方法调用参数,如下所示:puts some_method('bar')

在Rails开始自动转义字符串之前,使用h别名来转义HTML是同一个故事。

答案 1 :(得分:3)

我非常确定这是escape_javascript

的简写
<%=j some-variable %> => <%= escape_javascript some-variable %>

将尝试查找此

的来源

这里是source。请注意,这仅适用于Rails 4.0。

所以我不确定,实际上 - 文档中的上下文使得它似乎需要与render结合使用...

$('some_element').replaceWith('<%=j render 'some/element_template' %>');

答案 2 :(得分:2)

在此示例中,j是方法,some-variable是其参数。 调用方法后,此调用的结果将转换为字符串并插入到视图中。

更准确地说,jescape_javascript方法的别名,可以转义JavaScript字符。