Ruby on rails Rails 3.1:具有命名路由的资产管道

Ruby on rails Rails 3.1:具有命名路由的资产管道,ruby-on-rails,ruby-on-rails-3,asset-pipeline,Ruby On Rails,Ruby On Rails 3,Asset Pipeline,Rails 3.1.0.rc5 我在使命名路由在启用ERB的Javascript文件中工作时遇到问题: # app/assets/javascripts/items.js.erb $('#start').click(function() { $.ajax({ url : '<%= ajax_items_path %>', success : function(result) { $('#result').html(result); } })

Rails 3.1.0.rc5

我在使命名路由在启用ERB的Javascript文件中工作时遇到问题:

# app/assets/javascripts/items.js.erb
$('#start').click(function() {
  $.ajax({
    url : '<%= ajax_items_path %>',
    success : function(result) {
      $('#result').html(result);
    }
  });
});
#app/assets/javascripts/items.js.erb
$(“#开始”)。单击(函数(){
$.ajax({
url:“”,
成功:功能(结果){
$('#result').html(result);
}
});
});
错误消息如下所示:

Error compiling asset items.js:
NameError: undefined local variable or method `ajax_items_path' for #<#<Class:0x007fbcb49a7630>:0x007fbcb4ee30b8>
  (in myproject/app/assets/javascripts/items.js.erb)
编译asset items.js时出错: NameError:未定义的局部变量或方法“ajax\u items\u path”# (在myproject/app/assets/javascripts/items.js.erb中) 如果我在视图中直接使用,
ajax\u items\u路径
效果很好


资产管道中似乎没有命名路由。如果是这种情况,解决办法是什么?我真的希望避免在Javascript中硬编码url。

一个解决方法是使用Rails.application.routes.url\u helpers中的路由帮助程序,例如

<%= Rails.application.routes.url_helpers.ajax_items_path %>


一种解决方法是在HTML中返回URL,例如作为#start上的数据属性,并从中提取。我在Rails 3.1.0中遇到了完全相同的问题。您找到解决方案了吗?谢谢希伯尔特:是的,特里斯坦的回答对我很有用。我试过这个,它给了我这个
a[href=“/d/users/sign\u in”]