Ruby on rails Rails 3.1:具有命名路由的资产管道
Rails 3.1.0.rc5 我在使命名路由在启用ERB的Javascript文件中工作时遇到问题: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); } })
# 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”]