Я пытаюсь использовать asset_path
во время разработки в своем приложении Ruby on Rails 4 через javascript. В моей JavaScript я ссылке на файл HTML, используя что-то вроде:Ruby on Rails 4 и использование path_path
<%= asset_path('templates/login/index.html.erb') %>"
Файл физически находится в $RAILS_ROOT/app/assets/templates/login/index.html.erb
Когда мой Javascript пытается захватить этот файл, хотя, это подхватить " catchall ', который я собрал, потому что мой интерфейс - AngularJS, и он обрабатывает «маршрутизацию» для приложения. Вот лог:
Started GET "/templates/login/index.html.erb" for 127.0.0.1 at 2013-07-30 11:20:43 -0400
Processing by HomeController#index as
Parameters: {"a"=>"templates/login/index.html"}
Rendered home/index.html.erb within layouts/application (0.0ms)
Completed 200 OK in 12ms (Views: 12.3ms | ActiveRecord: 0.0ms)
Мой routes.rb выглядит следующим образом:
App::Application.routes.draw do
devise_for :users
root :to => 'home#index'
namespace :api do
end
get '*a', to: 'home#index'
end
Какой самый лучший способ избежать этой проблемы? Как я могу ссылаться на файл шаблона в моем javascript/угловом проекте?
Как я упоминал в комментариях ниже, что я пытаюсь достичь, это получить шаблоны из конвейера активов, а не идти на сервер, чтобы захватить их. Дополнительный кругосветное путешествие не имеет смысла, поскольку их можно обслуживать при загрузке страницы, чтобы приложение воспринималось как «быстрее», когда они уже кэшированы. Проблема здесь в том, что вам по-прежнему необходимо определить маршрут Rails для соответствия каждому маршруту на стороне углового, в противном случае Rails вернет значение 404.
Вероятно, вы должны проверить первый ответ здесь: http://stackoverflow.com/questions/12116476/rails-static-html-template-files-in-the-asset-pipeline-and-caching-in-developmen – coreyward
Это действительно не решает проблему URL-адресов шаблонов, попадающих в общий маршрут. Я пытаюсь избежать обработки на стороне сервера. – randombits
Я в основном стараюсь избегать AJAX для извлечения шаблонов. Все должно быть доступно из конвейера активов. Дополнительное путешествие туда-обратно к серверу кажется нечувствительным, но если маршрут отсутствует на стороне Rails, возвращается 404, хотя маршрут указан в Angular. – randombits