2013-07-30 4 views
2

Я пытаюсь использовать 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.

+0

Вероятно, вы должны проверить первый ответ здесь: http://stackoverflow.com/questions/12116476/rails-static-html-template-files-in-the-asset-pipeline-and-caching-in-developmen – coreyward

+0

Это действительно не решает проблему URL-адресов шаблонов, попадающих в общий маршрут. Я пытаюсь избежать обработки на стороне сервера. – randombits

+0

Я в основном стараюсь избегать AJAX для извлечения шаблонов. Все должно быть доступно из конвейера активов. Дополнительное путешествие туда-обратно к серверу кажется нечувствительным, но если маршрут отсутствует на стороне Rails, возвращается 404, хотя маршрут указан в Angular. – randombits

ответ

4

asset_path не загружает все файлы в каталоге активов. Он предназначен для изображений.
Если вы хотите добавить другие файлы, вам необходимо добавить для них парсер.

Как вы пытаетесь сделать это, используйте ваши угловые шаблоны из конвейера активов, хотя вы должны взглянуть на angular-rails-templates.

Он автоматически скомпилирует ваши шаблоны в javascript и сделает их доступными для углового.
Вы можете использовать их, как обычно. И как только вы начнете развертывание, все ваши шаблоны будут включены в ваш единственный файл application.js.

+0

Это выглядит нормально, но я бы предпочел использовать что-то, у которого есть большое сообщество. Не уверен, что это поддерживается или нет, а документация довольно тонкая. Должно быть четкое решение. – randombits

+0

@ randombits Вы должны выглядеть немного ближе к автору библиотеки; вы, возможно, столкнулись с ним недавно в StackOverflow. И насколько он поддерживается - вы можете легко проверить историю фиксации и посмотреть, что это всего лишь 2-недельный проект. ;) – coreyward

+0

Я знаю, что автор этого ответа создал библиотеку. Это все еще не меняет мою первоначальную мысль. – randombits

Смежные вопросы