我刚刚进入资产管道; 我正在使用SASS/SCSS,但我不明白为什么我应该使用资产助手.
例如,如果我有一些CSS/SCSS而不使用资产助手:
background-image: url('rails.png');
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,因为我的.SCSS文件和图像都在资源目录中并可以访问.
这样做有什么意义?:
background-image: asset-url("rails.png", image);
Run Code Online (Sandbox Code Playgroud)
我知道它会在网址中添加"/ assets /",但如果标准的CSS方式有效,我为什么要使用资产助手呢?
我想我错过了什么.它与部署到生产有关吗?
我想在我的资产管道中做这样的事情:
的application.js
//= require jquery
//= require jquery_ujs
//= require_tree ./includes
//= require global
<% if File.exists? "#{Rails.root}/assets/javascripts/#{params[:controller]}.js" %>
//= require <%= params[:controller] %>
<% end %>
<% if File.exists? "#{Rails.root}/assets/javascripts/#{params[:controller]}/#{params[:action]}.js" %>
//= require <%= params[:controller] %>/<%= params[:action] %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
现在这不起作用,因为资产文件无法访问params变量.现在有没有办法从资产中获取当前控制器动作名称?
或者是整个项目的预编译资产文件,这是不可能的?
我是一个完整的菜鸟,我试图了解如何在Rails中使用javascript和资产管道.例如,我在哪里放一个简单的$(document).ready来在特定视图中执行.我已经完成了将代码放在视图中,但我认为这不是最好的方法.补充阅读也将不胜感激,谢谢.
我无法让glyphicons与bootstrap 3和rails一起使用.我已经在互联网上找到了灵感,没有找到任何帮助.在我的bootstrap.css文件中,我有:
@font-face {
font-family: 'Glyphicons Halflings';
src: url('/assets/glyphicons-halflings-regular.eot');
src: url('/assets/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
Run Code Online (Sandbox Code Playgroud)
在application.rb中,我有:
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"
config.assets.precompile += %w( .svg .eot .woff .ttf )
Run Code Online (Sandbox Code Playgroud)
我已经尝试过跑:
rake资产:预编译RAILS_ENV =开发
在application.js我有:
//= require jquery
//= require jquery_ujs
//= require_tree .
//= require bootstrap
Run Code Online (Sandbox Code Playgroud)
在application.css我有:
*= require_self
*= require_tree .
*= require bootstrap
*/
Run Code Online (Sandbox Code Playgroud)
我的所有字体都存储在资源/字体中
我已经看过以下内容,但没有一个有效:
Bootstrap 3 + Rails 4 - 某些Glyphicons不工作
我怎样才能解决这个问题?
ruby-on-rails asset-pipeline twitter-bootstrap twitter-bootstrap-rails ruby-on-rails-4
我有一个简单的rails应用程序,我试图通过Capistrano回复.该应用程序在开发中工作正常但在部署时失败.我将其追溯到资产:预编译步骤,在本地计算机上也失败了.我已经看到了其他类似问题的其他帖子,但没有任何真正指向我正确的方向.
我不够强大,无法确定下一步的位置,所以任何指针都会受到赞赏.
Solara:myapp dan$ rake assets:precompile --trace
** Invoke assets:precompile (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
rake aborted!
NoMethodError: undefined method `tr' for nil:NilClass
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:37:in `initialize'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:270:in `new'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:270:in `resolve_url_connection'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:258:in `resolve_hash_connection'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:215:in `resolve_connection'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:139:in `resolve'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:151:in `block in resolve_all'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:150:in `each'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/connection_adapters/connection_specification.rb:150:in `resolve_all'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/connection_handling.rb:69:in `resolve'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/core.rb:46:in `configurations='
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/railtie.rb:117:in `block (2 levels) in <class:Railtie>'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:38:in `instance_eval'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:38:in `execute_hook'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:28:in `block in on_load'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:27:in `each'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.2.4/lib/active_support/lazy_load_hooks.rb:27:in `on_load'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.2.4/lib/active_record/railtie.rb:116:in `block in <class:Railtie>'
/Users/dan/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.2.4/lib/rails/initializable.rb:30:in …Run Code Online (Sandbox Code Playgroud) 我的仪表板
section "Graph", do
div do
render 'graph'
end
end
Run Code Online (Sandbox Code Playgroud)
_graph.html.erb
<script type="text/javascript">
$(function(){
new Highcharts.Chart({
chart: {
renderTo: "charts"
},
title: {
text: "Orders"
},
xAxis: {
title: {
text: "X axis"
}
},
yAxis: {
title: {
text: "Y axis"
}
},
series: [{
data: [1,3,5,7]
}]
});
});
Run Code Online (Sandbox Code Playgroud)
我将 _graph.html.erb 放置在哪个文件夹中,以便可以加载它。之后JavaScript可以正常工作吗?
嗨我正在将我的第一个Rails应用程序部署到Ubuntu 16服务器上,Capistrano除了图像没有在生产环境中显示外,一切顺利.
在生产服务器上,映像位于此路径中: /myapp/current/public/assets
但是,如果我在浏览器中看到这个,我的破碎图像链接给了我这个(见图片),这是标题图像的断开链接.
奇怪的是,有一个.svg文件在/myapp/current/public/assets浏览器中完美显示,下图是显示的路径

这是我的 Capfile
# Load DSL and set up stages
require "capistrano/setup"
# Include default deployment tasks
require "capistrano/deploy"
set :rbenv_type, :user # or :system, depends on your rbenv setup
set :rbenv_ruby, '2.3.1'
require 'capistrano/rbenv'
require 'capistrano/bundler'
require 'capistrano/rails'
# Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
Run Code Online (Sandbox Code Playgroud)
这是 config/deploy.rb
# config valid only for current version of Capistrano
lock '3.6.1' …Run Code Online (Sandbox Code Playgroud) 我刚刚开始开发另一个开发人员开发的新 Rails 应用程序,我必须承担该项目。当我尝试在开发模式下本地运行应用程序时,我在设置级别遇到了困难。该应用程序无法加载资源(css、js、图像)。我得到ERR_CONNECTION_REFUSED每个资产文件:

我必须补充一点,该项目正在使用
gem 'asset_sync', '~> 1.0.0'
Run Code Online (Sandbox Code Playgroud)
它用于同步 Rails 和 S3 之间的资产,但我认为它不应该在开发模式中发挥任何作用。
您知道为什么应用程序在开发模式下不加载资源吗?
当我在 chrome 上检查我的索引页时,head 标签有多个标签:
<script src="/assets/components/questions/question_likes.self-6aaf2ce97062977185e0d5f9fc31643ca8fd012bfb53c12752977afdab1260be.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/components.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/moment.self-0da3eb4ebf8fb8c3113d89afb90e5b7a87760d21b5b39a405a51fe05c8e40fd8.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/jquery-fileupload/vendor/jquery.ui.widget.self-92c37a41e67e528eecf100716907331b4b9aa4f546bf75ef2e0529c8c03a562d.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/jquery-fileupload/jquery.iframe-transport.self-e461f7ff2a60ee89459106a6f3e349cf79b7f56066b3c8cbc73389b30e1eb592.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/jquery-fileupload/jquery.fileupload.self-79c952fc273d5a8955a6093f4f489dcd509c5a2cefb2b9a049d3cdb2710ec8d3.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/jquery-fileupload/basic.self-6a3cf5192354f71615ac51034b3e97c20eda99643fcaf5bbe6d41ad59bd12167.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/jquery-fileupload/vendor/tmpl.self-c2108a63ad9ae9ab4a723bcf0104f6a92a63eb917331ff69fad6f02fe7219488.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/s3_direct_upload.self-a71af1e40427c6623d982df253581eb58013b84d84f45bcef7d0352ad4e82534.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/application.self-c88a422e522d3887e663830741eb19213b74b0bcee8413fffde6decde58266aa.js?body=1" data-turbolinks-track="true"></script>
Run Code Online (Sandbox Code Playgroud)
我认为 rails 将所有 js 文件连接成一个,为什么会发生这种情况?我正在使用react,没有turbolinks。
application.js 文件中的更改没有反映,因为每次 rails 从 public/assets 文件夹中选择文件。
这是我的application.js文件
//= require jquery
//= require jquery_ujs
//= require ./inner/jquery.min.js
//= require ./inner/sidebar-nav.min.js
//= require ./inner/jquery.slimscroll.js
//= require ./inner/waves.js
//= require ./inner/mask.js
//= require ./inner/footable-init.js
//= require ./inner/jquery.waypoints.js
//= require ./inner/jquery.counterup.min.js
//= require ./inner/raphael-min.js
//= require ./inner/morris.js
//= require ./inner/morris-data.js
//= require ./inner/owl.carousel.min.js
//= require ./inner/owl.custom.js
//= require ./inner/custom.min.js
//= require ./inner/dashboard1.js
Run Code Online (Sandbox Code Playgroud)
我试过:
rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
我也在development.rb 中尝试过
config.serve_static_assets = false
Run Code Online (Sandbox Code Playgroud) asset-pipeline ×10
ruby-on-rails ×10
javascript ×3
assets ×2
capistrano ×2
charts ×1
jquery ×1
nginx ×1
passenger ×1
sass ×1