我刚刚看到一个博客,其中提到了j
Rails 中的一个函数。他们使用它来进行 ajax 样式的页面更新。
$('#cart').html("<%=j render @cart %>");
我知道他们正在使用局部来渲染cart
局部,但是有什么意义j
呢?我发现一些文章说它将字符串转换为 JavaScript 可以接受的东西,但这是什么意思?
我刚刚看到一个博客,其中提到了j
Rails 中的一个函数。他们使用它来进行 ajax 样式的页面更新。
$('#cart').html("<%=j render @cart %>");
我知道他们正在使用局部来渲染cart
局部,但是有什么意义j
呢?我发现一些文章说它将字符串转换为 JavaScript 可以接受的东西,但这是什么意思?
彼得实际上发布了正确的答案。但我会尝试详细说明:
我猜你对ajax的基本概念很熟悉吧?假设您希望能够以 ajaxy 方式创建评论。在 Rails 中,您可以通过以下方式响应POST请求CommentsController
:
def create
@comment = Comment.new(params[:comment])
respond_to do |format|
render.js
end
end
这意味着如果来自客户端的 ajax 请求(通过 jquery/javascript)提交给CommentsController
它,它将识别格式 ( .js
) 并以_create.js.erb部分响应。然后,部分将使用以下内容呈现新评论:
$('.comments').append("<%=j render @comment %>");
现在进入 j 或 escape_javascript 方法:
一些邪恶的用户可能会提交包含(恶意)javascript 的评论,除非您使用该j
方法,否则该评论将在您的页面上执行
为 JavaScript 段转义回车和单引号和双引号。
因此阻止在浏览器中执行代码。
escape_javascript(javascript)
为 JavaScript 段转义回车和单引号和双引号。
也可以通过别名 j() 获得。
来自rails 文档。