Rails中的j函数是做什么的?

我刚刚遇到了一个在Rails中提到jfunction的博客。 他们正在使用它来做Ajax风格的页面更新。

 $('#cart').html("<%=j render @cart %>"); 

我得到他们正在使用partials渲染cart部分,但什么是j ? 我发现一些文章说,它将string转换为JavaScript可以接受的东西,但这是什么意思?

escape_javascript(javascript)

转义回车和JavaScript段的单引号和双引号。

也可以通过别名j()。

从rails文档 。

彼得实际上发布了正确的答案。 但我会尽力详细说明:

我猜你对ajax的基本概念很熟悉? 比方说,你想能够以ajaxy的方式创build评论。 在rails中,您可以通过以下方式响应您的CommentsController POST请求:

 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段的单引号和双引号。

并因此阻止浏览器中的代码的执行。