Как задать путь из routes.rb в моем file.js?

Есть к примеру файлик, написанный на JavaScript. Положенный в папку public. И приаттаченный потом в header. В этом файле, например, есть какие-нибудь обращения к серверу (ajax). Эти обращения идут по адресам, которые жестко зашиты в этот файл. Потом я меняю в routes.rb какой-то маршрут и должен сидеть и вспоминать в каком месте, что могло из-за этого сломаться. Вопрос состоит в том как сделать что-то типа:
file.js.erb
$.get(<%= send_sms_path %>, function(data){
 javascript_statements
})


Это вопрос №1, а вопрос №2 это более сложная версия моего первого вопроса:
file.js.erb
$.get(<%= send_sms_path(i) %>)
,где i - вычисляется в браузере пользователя.
Реально? Или придется вручную
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ответы на вопрос 2
@gsmetal
Есть гем: js-routes. Можно регулярками настраивать, какие пути включать/выключать, поддержка параметров, как в рельсовых хелперах и т. д.
В итоге пути выводятся просто:
Routes.user_project_path(1,2, {q: 'hello', custom: true}) // => "/users/1/projects/2?q=hello&custom=true"
Ответ написан
miraage
@miraage
Старый прогер
В шаблоне вызовите хелпер.
Хелпер, в свою очередь, в JSON формате выведет роуты, вроде таких:
window.routes = {
  send_sms_path: ['GET', '/send/sms/:id']
};


// EDIT
<!-- где-то внутри вьюхи -->
<%= render_routes %>

# ApplicationHelper.rb
def render_routes
  # Тут надо взять текущие роуты, создать из них хэш, пропусть его через JSON.generate и выплюнуть отсюда 
  # что-то вроде "<script>window.routes = #{JSON.generate roues};</script>"
end
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы