它可以在开发模式下查找,但在生产模式下显示ActionController::RoutingError (No route matches [GET] "/lenord-single-page-theme/js/custom.js"):
错误。
在运行rails服务器之前,我运行了RAILS_ENV=production rake assets:precompile --trace
我在供应商
下添加了两个资产文件夹在application.rb
文件中,我插入了行
config.assets.paths << "#{Rails.root}/vendor/themes"
并将config.serve_static_assets
更改为true
+++ b/config/environments/production.rb
@@ -20,7 +20,7 @@ DqaStreesfulServer::Application.configure do
# config.action_dispatch.rack_cache = true
# Disable Rails's static asset server (Apache or nginx will already do this).
- config.serve_static_assets = false
+ config.serve_static_assets = true
文件夹结构
vendor
├── assets
│ ├── javascripts
│ └── stylesheets
└── themes
├── ace-admin-theme
│ ├── avatars
│ ├── css
│ ├── font
│ ├── images
│ ├── img
│ └── js
└── lenord-single-page-theme
├── css
├── fonts
├── img
├── index.html
├── js
└── rs-assets
我以这种方式引用我的js文件
welcome.html.haml
60: %script{src: asset_path("lenord-single-page-theme/js/custom.js")}
我想问题可能在production.rb
我试图通过在production.rb
config.assets.precompile += %w( vendor/themes/* )
我通过rails s -e production
命令而不是nginx or apache
我在生产模式下获得ActionView::Template::Error (Invalid CSS after "}": expected selector or at-rule, was "}"
在我做了以下更改之后。
在../../config/environments/production.rb
+ config.assets.compile = true
+ config.assets.precompile = [/^[-_a-zA-Z0-9]*\..*/]
+ config.assets.precompile += %w( *.js *.css )
我在这里展示了vendoe / theme /和public / assets之间的树视图
合理吗?
在公共/资产
下% tree lenord-single-page-theme (git)-[feature/prettier_form]
lenord-single-page-theme
└── js
├── application-dfabb3389cb2e71ba110a8589e5e106b.js
└── application-dfabb3389cb2e71ba110a8589e5e106b.js.gz
在vendor / themes /
下lenord-single-page-theme
├── css
│ ├── animate.min.css
│ ├── bootstrap.css
│ ├── bootstrap.min.css
│ ├── font-awesome.min.css
│ ├── prettyPhoto.css
│ ├── rs-settings-ie8.css
│ ├── rs-settings.css
│ └── style.css
├── fonts
│ ├── FontAwesome.otf
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.svg
│ ├── fontawesome-webfont.ttf
│ └── fontawesome-webfont.woff
├── img
│ ├── 1.jpg
│ ├── 10.jpg
│ ├── 11.png
│ ├── 12.jpg
│ ├── 13.png
│ ├── 2.jpg
│ ├── 3.jpg
│ ├── 4.png
│ ├── 5.png
│ ├── 6.png
│ ├── 8.jpg
│ ├── 9.jpg
│ ├── aboutus.png
│ ├── back-top.png
│ ├── banner_1.jpg
│ ├── banner_2.jpg
│ ├── banner_3.jpg
│ ├── blue-back.png
│ ├── dummy.png
│ ├── fback.png
│ ├── portfolio
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ ├── 3.jpg
│ │ ├── 4.jpg
│ │ ├── 5.jpg
│ │ ├── 6.jpg
│ │ ├── 7.jpg
│ │ ├── 8.jpg
│ │ ├── 9.jpg
│ │ ├── tn1.jpg
│ │ ├── tn2.jpg
│ │ ├── tn3.jpg
│ │ ├── tn4.jpg
│ │ ├── tn5.jpg
│ │ ├── tn6.jpg
│ │ ├── tn7.jpg
│ │ ├── tn8.jpg
│ │ └── tn9.jpg
│ ├── prettyPhoto
│ │ ├── dark_rounded
│ │ │ ├── btnNext.png
│ │ │ ├── btnPrevious.png
│ │ │ ├── contentPattern.png
│ │ │ ├── default_thumbnail.gif
│ │ │ ├── loader.gif
│ │ │ └── sprite.png
│ │ ├── dark_square
│ │ │ ├── btnNext.png
│ │ │ ├── btnPrevious.png
│ │ │ ├── contentPattern.png
│ │ │ ├── default_thumbnail.gif
│ │ │ ├── loader.gif
│ │ │ └── sprite.png
│ │ ├── default
│ │ │ ├── default_thumb.png
│ │ │ ├── loader.gif
│ │ │ ├── sprite.png
│ │ │ ├── sprite_next.png
│ │ │ ├── sprite_prev.png
│ │ │ ├── sprite_x.png
│ │ │ └── sprite_y.png
│ │ ├── facebook
│ │ │ ├── btnNext.png
│ │ │ ├── btnPrevious.png
│ │ │ ├── contentPatternBottom.png
│ │ │ ├── contentPatternLeft.png
│ │ │ ├── contentPatternRight.png
│ │ │ ├── contentPatternTop.png
│ │ │ ├── default_thumbnail.gif
│ │ │ ├── loader.gif
│ │ │ └── sprite.png
│ │ ├── light_rounded
│ │ │ ├── btnNext.png
│ │ │ ├── btnPrevious.png
│ │ │ ├── default_thumbnail.gif
│ │ │ ├── loader.gif
│ │ │ └── sprite.png
│ │ └── light_square
│ │ ├── btnNext.png
│ │ ├── btnPrevious.png
│ │ ├── default_thumbnail.gif
│ │ ├── loader.gif
│ │ └── sprite.png
│ ├── product.png
│ ├── service
│ │ ├── 11.png
│ │ ├── 12.png
│ │ ├── 21.png
│ │ ├── 22.png
│ │ ├── 31.png
│ │ ├── 32.png
│ │ ├── 41.png
│ │ └── 42.png
│ ├── service.png
│ ├── vast.jpg
│ ├── vivotek_square_icon.jpg
│ ├── vvtk_sd.jpg
│ └── wood-back.png
├── index.html
├── js
│ ├── application.js
│ ├── bootstrap.js
│ ├── bootstrap.min.js
│ ├── custom.js
│ ├── gmaps.js
│ ├── html5shiv.js
│ ├── jquery.arbitrary-anchor.js
│ ├── jquery.js
│ ├── jquery.knob.js
│ ├── jquery.prettyPhoto.js
│ ├── jquery.themepunch.plugins.min.js
│ ├── jquery.themepunch.revolution.min.js
│ ├── respond.min.js
│ └── waypoints.min.js
└── rs-assets
├── arrow_large_left.png
├── arrow_large_right.png
├── arrow_left.png
├── arrow_left2.png
├── arrow_right.png
├── arrow_right2.png
├── arrowleft.png
├── arrowright.png
├── arrows.psd
├── black50.png
├── boxed_bgtile.png
├── bullet.png
├── bullet_boxed.png
├── bullets.png
├── bullets.psd
├── bullets2.png
├── coloredbg.png
├── grain.png
├── large_left.png
├── large_right.png
├── loader.gif
├── loader2.gif
├── navigdots.png
├── navigdots_bgtile.png
├── shadow1.png
├── shadow2.png
├── shadow3.png
├── small_arrows.psd
├── small_left.png
├── small_left_boxed.png
├── small_right.png
├── small_right_boxed.png
├── timer.png
├── timerdot.png
├── transparent.jpg
└── white50.png
14 directories, 154 files
答案 0 :(得分:1)
管道资产可以放置在三个位置之一的应用程序内: app / assets , lib / assets 或 vendor / assets 。 您已将资产放置在供应商/资产和供应商/主题中。
预编译其他资产:
config.assets.precompile += ['vendor/themes/lenord-single-page-theme/js/*.js']
config.assets.precompile += ['vendor/themes/lenord-single-page-theme/css/*.css']
运行rake任务:
RAILS_ENV=production bundle exec rake assets:precompile
在公共/资产下检查:
该文件应在
中预编译供应商/主题/ LENORD单页面主题/ JS / custom.js
OR
LENORD单页面主题/ JS / custom.js
然后按以下方式调用自定义资源文件:
javascript_include_tag“PATH_OF_THE_ASSET”
<强>实施例强>
javascript_include_tag“lenord-single-page-theme / js / custom.js”
OR
javascript_include_tag “供应商/主题/ LENORD单页面主题/ JS / custom.js”