我在ruby视图文件中看到了标记<%=j some-variable %>
,我想知道是否有人能告诉我它中的j
代表什么?我知道<%= %>
用于打印ruby,<% %>
用于在视图中使用ruby代码。
答案 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
是其参数。
调用方法后,此调用的结果将转换为字符串并插入到视图中。
更准确地说,j
是escape_javascript
方法的别名,可以转义JavaScript字符。