Rails 3.1: конвейер активов с именованными маршрутами - PullRequest
12 голосов
/ 11 августа 2011

Rails 3.1.0.rc5

У меня проблемы с получением именованных маршрутов для работы в файле Javascript с поддержкой ERB:

# 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 работает нормально, если я использую его непосредственно в представлении.

Похоже, что именованные маршруты не доступны в конвейере активов.Если это так, какой обходной путь?Я действительно хочу избежать жесткого кодирования URL в моем Javascript.

1 Ответ

25 голосов
/ 14 сентября 2011

Обходной путь - использовать помощников по маршруту с Rails.application.routes.url_helpers, например,

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