Rails 求救!.js.coffee 文件中的 escape_javascript 代码不执行!

jksharer · 2014年05月16日 · 最后由 jksharer 回复于 2014年05月16日 · 2829 次阅读

页面包括左侧导航区域和右侧正文区域。 左侧导航有一列链接,在 coffee 文件中对这些链接加了事件监听,点击链接后在正文区域刷新链接内容, 具体来说,是 render 一个局部视图。代码如下:

$ ->
$("a.two_level").click ->
    $("#content").replaceWith("<%= escape_javascript(render('" + partial_name + "'))%>")

但页面不执行这段 ruby 代码,直接显示:<%= escape_javascript(render('announcements/index'))%>

哪位高人指点一下!

加上 .erb 后缀。

确定缩进没有问题?引号用法没有问题?试试

$ ->
   $("a.two_level").click ->
      $("#content").replaceWith('<%= escape_javascript(render(partial_name))%>')

#2 楼 @jksharer 这个 js.coffee 是在服务端渲染的吗?如果是,escape_javascript 似乎用法不对,应该是这样的:

$("#content").replaceWith("<%= escape_javascript(render(partial_name)) %>")

如果是客户端的(直接 asset pipeline 编到 application.js 下),则无法用 escape_javascript

#3 楼 @qifengle 看着没问题,也不报错

后缀是 .js.erb 才会执行 erb

所以你另外得建一个 .js.erb 文件

#4 楼 @ashchan 应该是客户端的,如果不能用 escape_javascript,类似的功能有别的办法实现吗?

#8 楼 @jksharer 在点击时发起一个 ajax 请求,在被请求的 action 里渲染一个类似的 .js.coffee。

这个 ajax 请求可以用 link_toremote: true 来自动实现。

#9 楼 @ashchan 好的 我试试 多谢了!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号