2011-12-09 49 views
6

我正在尝试做这项工作,但这让我很生气。 (因为它,而我想在这里字符串返回一个对象.to_s)我已经设置这将供应商/资产/ javascripts添加到我的有效资产路线

application.rb中

config.assets.paths << Rails.root.join("vendor", "assets", "javascripts").to_s 

。 我无法找到解决方案,并让我疯狂,因为供应商的样式表目录工作,但javascripts不是。

我怎样才能做到这一点?

返回错误:

<h1>Routing Error</h1> 
<p><pre>No route matches [GET] &quot;/assets/ext-all-debug.js&quot;</pre></p> 

回答

5

我相信厂商已经包含在你的资产路径,请使用轨道控制台

rails console 
Rails.application.config.assets.paths.each do |path|; puts path; end 

但是最简单的事情可能会在应用程序/资产/ JavaScript的/ lib这个

  • 放分机
  • require_tree将已经加载或者是明确

应用lication。JS

//= require ./lib/ext-all-debug.js 

如果你真的想在供应商

  • 创建目录供应商/资产/ Java脚本/ EXT
  • 创建清单文件的供应商/资产/ JavaScript的/转/ index.js
  • 对于index.js

    把EXT-ALL-debug.js为供应商/资产/ JavaScript的/转/

代码为的application.js

//= require ext 

这是该指数清单文件位于

重新启动服务器导轨

,如果你不想要的目录名

//= require ./ext-all-debug.js 

代码通过application.js加载extjs,即你只想在特定页面上包含extjs库文件

<%= javascript_include_tag "ext" %> 
0

这并不容易从,因为我认为这个问题是在其他地方,你所提供的信息,请参阅该问题。

资产管道的废话是把所有的 javascripts放到一个文件中。该文件包含在HTML文档中。所以关键是一个大的JS文件。那么,它可能会更复杂,但我认为这不一定是你的情况。

因此,例如,在布局ERB(通常为app/views/layout/application.erb):

<head> 
    ... 
    <%= javascript_include_tag "application" %> 
</head> 

app/assets/javascripts/application.js

//= require ext_all_debug 
//= ... 

当请求的HTML页面,它要求 “的application.js”,它是以供应商JS代码嵌入到此文件中的方式生成的(请注意,在该需求中没有路径)。

还有一件事 - 测试生产环境中的行为非常重要,因为通常这些生成的JS文件将由nginx/apache提供服务。 rake assets:precompile是一个好的开始。

1

您可以添加:

//= require_tree ../../../vendor/assets/javascripts 

application.js文件。

1

读取到更新

它看起来像问题连接到EXT有它自己的结构路径构建相对路径的事实。

我解决了这个问题,保持整个ext目录结构(没有拆分图像),并将其添加到供应商/外部目录(由我创建)。用// =需要EXT-ALL-debug.js

更新23/12/2013引用它

config.assets.paths << Rails.root.join("vendor", "assets", "externals").to_s 

而现在一切它的正常工作:

我然后添加路径

从Rails 3开始,请注意这个目录已被默认添加。

相关问题