将vendor/assets/javascripts添加到我的有效资产路线

Fir*_*DoL 6 ruby-on-rails ruby-on-rails-3 asset-pipeline

我正在尝试做这项工作,但这让我很生气.我已经把它设置好了

application.rb中

config.assets.paths << Rails.root.join("vendor", "assets", "javascripts").to_s
Run Code Online (Sandbox Code Playgroud)

(.to_s因为它返回一个对象,而我在这里想要一个字符串).我找不到解决方案,并让我发疯,因为供应商的样式表目录工作,但javascripts不是.

我怎样才能做到这一点?

错误返回:

<h1>Routing Error</h1>
<p><pre>No route matches [GET] &quot;/assets/ext-all-debug.js&quot;</pre></p>
Run Code Online (Sandbox Code Playgroud)

hou*_*se9 5

我相信供应商已经包含在您的资产路径中,请使用rails控制台进行检查

rails console
Rails.application.config.assets.paths.each do |path|; puts path; end
Run Code Online (Sandbox Code Playgroud)

然而,最简单的事情可能是这个

  • 把ext放在app/assets/javascripts/lib上
  • require_tree将加载它或显式

的application.js

//= require ./lib/ext-all-debug.js
Run Code Online (Sandbox Code Playgroud)

如果你真的想要它在供应商

  • 创建dir vendor/assets/javascripts/ext
  • 创建清单文件vendor/assets/javascripts/ext/index.js
  • 将ext-all-debug.js放入vendor/assets/javascripts/ext /

index.js的代码

//= require ./ext-all-debug.js
Run Code Online (Sandbox Code Playgroud)

application.js的代码

//= require ext
Run Code Online (Sandbox Code Playgroud)

这是索引清单文件所在的目录的名称

重启rails服务器

如果您不想通过application.js加载extjs,即您只想在特定页面上包含extjs lib

<%= javascript_include_tag "ext" %>
Run Code Online (Sandbox Code Playgroud)