【问题标题】:Rails 3.1: Asset pipeline with named routesRails 3.1:具有命名路由的资产管道
【发布时间】:2011-10-24 21:00:16
【问题描述】:

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);
    }
  });
});

错误信息如下:

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)

ajax_items_path 路由如果我直接在视图中使用它就可以正常工作。

资产管道中似乎没有命名路由。如果是这种情况,解决方法是什么?我真的想避免在我的 Javascript 中对 URL 进行硬编码。

【问题讨论】:

  • 一种解决方法是在 HTML 中返回 URL,例如作为#start 上的数据属性,然后从那里提取它。
  • 我在 Rails 3.1.0 中遇到了完全相同的问题您找到任何解决方案了吗?谢谢
  • Thibault:是的,tristanm 的回答对我有用。

标签: ruby-on-rails ruby-on-rails-3 asset-pipeline


【解决方案1】:

一种解决方法是使用来自Rails.application.routes.url_helpers 的路由助手,例如

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

【讨论】:

  • 我试过这个,它给了我这个a[href="/d/users/sign_in"]
猜你喜欢
  • 2012-01-23
  • 1970-01-01
  • 2011-12-03
  • 1970-01-01
  • 2012-02-08
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
  • 2011-11-23
相关资源
最近更新 更多