在 rails 的 ruby 中包含自定义文件夹特定资产
Include custom folder specific assets in ruby on rails
我正在尝试创建单独的文件夹来保存与后端和前端相关的资产。我计划了以下文件夹结构:app/assets/dashboard/javascripts
而不是通常的 app/assets/javascripts
.
后端通过 app/views/layouts/dashboard.html.erb
提供服务,并按以下方式包含资产:
<%= stylesheet_link_tag 'dashboard/dashboard', params[:controller], media: 'all' %>
<%= javascript_include_tag 'dashboard/dashboard', params[:controller] %>
前端通过 app/views/layouts/application.html.erb
提供服务,并按以下方式包含资产:
<%= stylesheet_link_tag 'store/application', params[:controller], media: 'all' %>
<%= javascript_include_tag 'store/application', params[:controller] %>
我不确定以这种方式包含资产的正确方法是什么,因此在控制台 http://dashboard.localhost.com:3000/javascripts/dashboard/javascripts/dashboard.js 中出现 404 not found
错误
我也试过将脚本路径更改为 <%= javascript_include_tag 'store/javascripts/application', params[:controller] %>
,但它也不起作用。
还尝试将 中提到的以下代码添加到 application.rb,但它也不起作用:
Dir.glob("#{Rails.root}/app/assets/**/").each do |path|
config.assets.paths << path
end
使用这些设置,控制台中填充的路径如下:
[9] pry(main)> Rails.application.config.assets.paths
=> ["/home/vipin8169/projectRoot/inmonarch_website/app/assets/images",
"/home/vipin8169/projectRoot/xyz/app/assets/javascripts",
"/home/vipin8169/projectRoot/xyz/app/assets/stylesheets",
"/home/vipin8169/projectRoot/xyz/vendor/assets/javascripts",
"/home/vipin8169/projectRoot/xyz/vendor/assets/stylesheets",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/jquery-rails-4.1.0/vendor/assets/javascripts",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/coffee-rails-4.1.1/lib/assets/javascripts",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/react-rails-1.6.2/lib/assets/react-source/development-with-addons",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/react-rails-1.6.2/lib/assets/javascripts/",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/bootstrap-sass-3.3.6/assets/stylesheets",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/bootstrap-sass-3.3.6/assets/javascripts",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/bootstrap-sass-3.3.6/assets/fonts",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/bootstrap-sass-3.3.6/assets/images"]
在rails中是否支持,以这种方式改变资产目录结构?
在您的 application.rb 文件中。添加这个
config.assets.enabled = true
config.assets.paths << Rails.root.join("app", "assets", "dashboard")
它会将此文件夹添加到资产路径下。之后
stylesheet_link_tag 'dashboard', params[:controller], media: 'all'
会起作用。
我正在尝试创建单独的文件夹来保存与后端和前端相关的资产。我计划了以下文件夹结构:app/assets/dashboard/javascripts
而不是通常的 app/assets/javascripts
.
后端通过 app/views/layouts/dashboard.html.erb
提供服务,并按以下方式包含资产:
<%= stylesheet_link_tag 'dashboard/dashboard', params[:controller], media: 'all' %>
<%= javascript_include_tag 'dashboard/dashboard', params[:controller] %>
前端通过 app/views/layouts/application.html.erb
提供服务,并按以下方式包含资产:
<%= stylesheet_link_tag 'store/application', params[:controller], media: 'all' %>
<%= javascript_include_tag 'store/application', params[:controller] %>
我不确定以这种方式包含资产的正确方法是什么,因此在控制台 http://dashboard.localhost.com:3000/javascripts/dashboard/javascripts/dashboard.js 中出现 404 not found
错误
我也试过将脚本路径更改为 <%= javascript_include_tag 'store/javascripts/application', params[:controller] %>
,但它也不起作用。
还尝试将
Dir.glob("#{Rails.root}/app/assets/**/").each do |path|
config.assets.paths << path
end
使用这些设置,控制台中填充的路径如下:
[9] pry(main)> Rails.application.config.assets.paths
=> ["/home/vipin8169/projectRoot/inmonarch_website/app/assets/images",
"/home/vipin8169/projectRoot/xyz/app/assets/javascripts",
"/home/vipin8169/projectRoot/xyz/app/assets/stylesheets",
"/home/vipin8169/projectRoot/xyz/vendor/assets/javascripts",
"/home/vipin8169/projectRoot/xyz/vendor/assets/stylesheets",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/jquery-rails-4.1.0/vendor/assets/javascripts",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/coffee-rails-4.1.1/lib/assets/javascripts",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/react-rails-1.6.2/lib/assets/react-source/development-with-addons",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/react-rails-1.6.2/lib/assets/javascripts/",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/bootstrap-sass-3.3.6/assets/stylesheets",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/bootstrap-sass-3.3.6/assets/javascripts",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/bootstrap-sass-3.3.6/assets/fonts",
"/home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/bootstrap-sass-3.3.6/assets/images"]
在rails中是否支持,以这种方式改变资产目录结构?
在您的 application.rb 文件中。添加这个
config.assets.enabled = true
config.assets.paths << Rails.root.join("app", "assets", "dashboard")
它会将此文件夹添加到资产路径下。之后
stylesheet_link_tag 'dashboard', params[:controller], media: 'all'
会起作用。