在我的Rails应用程序3.2(Ruby 1.9的)我得到的CoffeeScript使用路径佣工时下面的错误。
undefined local variable or method `new_user_session_path'
在我的部分_usermenu.html.haml工作正常:
= link_to t('user.login'), new_user_session_path
在我的应用程序/资产/ JavaScript的/ metamenu.js.coffee.erb抛出上述错误:
$.get("<%= new_user_session_path %>")
是不是有可能使用的CoffeeScript再培训局的x_path和x_url助手?
这是因为,你是不是你的资产内的视图范围内。 添加一个ERB扩展到文件并没有改变这一点,它只是让你评估嵌入式红宝石。
如果这是一个一次性的情况下,最好的办法就是使用字符串本身。
$.get("/sign_in")
如果你真的想你可以创建一个部分是输出脚本标记输出的辅助方法,到JS变量和访问他们的方式。
# in your layout
<%= render 'url_helpers' %>
# in app/views/layouts/_url_helpers.html.erb
<script>
window.new_user_session_path = "<%= new_user_session_path %>";
# add more if necessary
</script>
# in your coffeescript
$.get(@new_user_session_path)
另外值得牢记这显然从不为成员的工作路线在您传递模型的URL帮手的实例作为那绝对是不可用的CoffeeScript。 请记住,在生产资产预编译的,所以你不能使用任何动态。 对于您真的只能依靠在控制器设置行动,以JS调用做出响应。
旧文章,但仍从谷歌访问。
在轨道4(当然至少也3),你可以使用路由助手轻松插入你的js文件:
资产/ JavaScript的/ my_file.js.coffee.erb
<% self.class.include Rails.application.routes.url_helpers %>
window.index_route = '<%= index_path %>'