我在一个 ruby 视图文件中看到了这个标签<%=j some-variable %>
,我想知道是否有人能告诉我j
它代表什么?我知道<%= %>
用于打印 ruby 并<% %>
用于在视图中使用 ruby 代码。
3 回答
在 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')
.
h
在 Rails 开始自动转义字符串之前,转义 HTML的别名也是如此。
我很确定这是escape_javascript
<%=j some-variable %> => <%= escape_javascript some-variable %>
将尝试为此寻找来源
这是来源。请注意,这仅在 Rails 4.0 中可用。
所以我不确定,实际上 - 文档中的上下文使它看起来需要与render
...结合使用
$('some_element').replaceWith('<%=j render 'some/element_template' %>');
在这个例子中,j
是方法并且some-variable
是它的参数。调用方法后,此调用的结果将转换为字符串并插入到您的视图中。
更准确地说,j
是escape_javascript
方法的别名,用于转义 JavaScript 字符。