gpt4 book ai didi

javascript - Ruby on Rails 4 和 asset_path 的使用

转载 作者:数据小太阳 更新时间:2023-10-29 08:38:47 24 4
gpt4 key购买 nike

我正在尝试使用 asset_path在通过 javascript 在我的 Ruby on Rails 4 应用程序中开发期间。在我的 javascript 中,我使用类似以下内容引用 HTML 文件:

<%= 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/angular 项目中引用模板文件?

正如我在下面的评论中提到的,我试图实现的是从 Assets 管道中检索模板,而不必去服务器获取它们。额外的往返没有意义,因为它们可以在页面加载时提供,以使应用程序在已经缓存时被视为“更快”。这里的问题是您仍然需要定义一个 Rails 路由来匹配 Angular 端的每条路由,否则 Rails 将返回 404。

最佳答案

asset_path 不会加载 Assets 目录中的所有文件。它适用于图像。
如果要添加其他文件,则需要为它们添加解析器。

尽管您要做的是使用 Assets 管道中的 Angular 模板,但您应该看看 angular-rails-templates .

它会自动将您的模板编译成 javascript,并使它们可用于 Angular。
然后您可以像往常一样使用它们。一旦您部署到生产环境中,您的所有模板都将包含在您的单个 application.js 文件中。

关于javascript - Ruby on Rails 4 和 asset_path 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17951139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com