Rails的路径佣工不js.coffee.erb工作(Rails path-helpers does

2019-07-20 10:34发布

在我的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助手?

Answer 1:

这是因为,你是不是你的资产内的视图范围内。 添加一个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调用做出响应。



Answer 2:

旧文章,但仍从谷歌访问。

在轨道4(当然至少也3),你可以使用路由助手轻松插入你的js文件:

资产/ JavaScript的/ my_file.js.coffee.erb

<% self.class.include Rails.application.routes.url_helpers %>
window.index_route = '<%= index_path %>'


文章来源: Rails path-helpers doesn't work in js.coffee.erb