我有我以前保持在500+〜旗图像public/images/flags/和public/images/flags_small/.对于我的国家/地区模型中的每个国家/地区,我存储了:iso_code与其对应的标志图像的名称相同的内容.例如,mx.png是墨西哥旗的名称,因为mx是墨西哥的双字母ISO代码.
我以前有一个帮助方法,它将返回html,根据国家的iso代码显示图像,以及我是否想要大或小的标志.
使用Rails 3.1,为了符合资产管道,我的印象是这些图像应该进入app/assets/images文件夹.以下是:
编辑:解决方案 下面的答案是正确的,但我不想每次都输入那么多代码,所以我创建了两个辅助方法:
def flag(country)
image_tag('/assets/flags/' + country.iso_code.downcase + '.png')
end
def small_flag(country)
image_tag('/assets/flag_small/' + country.iso_code.downcase + '.png')
end
Run Code Online (Sandbox Code Playgroud) 在Internet Explorer中测试我的网站(目前用IE 9进行测试)我看到很多错误,但我认为应该没有错.
事实证明,IE并未在开发模式中应用所有样式表(通过向body { border: 10px solid blue; }其中一个样式表添加规则来验证).
我打开了开发工具并完成了网络捕获,并报告它们已全部加载(结果:304).
我试过通过Webrick&thin运行服务器.
我唯一可以想到的是IE应用的样式太多了.我让它工作的唯一方法是预先编译资产并在生产模式下运行服务器.但这当然远非理想.
internet-explorer ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline
在资产管道的Rails文档中,它指出:
Rails 3.1及更高版本中的默认行为是将所有文件连接成一个主文件,每个文件用于JS和CSS.但是,如果需要,您可以分隔文件或文件组(见下文)
您如何将文件分成如图所示的组?例如,如果我有一个也有管理区域的应用程序,我想创建三个编译文件:
shared.css(前端和后端都使用此)
application.css(仅限前端)
admin.css(仅限后端)
默认情况下将我的所有文件合并到application.css中.
我有一个Rails应用程序,其中包含以下内容/app/assets/stylesheets/styles.css.erb:
...
#nestedbg {
background-position: left top;
background-image: url(<%= asset_path 'siteheader2.png' %>);
background-repeat: repeat-x;
background-attachment: fixed;
}
...
Run Code Online (Sandbox Code Playgroud)
当我运行rake assets:precompile然后运行时rails s -e production,一切都按预期工作.但是,当我删除预编译的资产并rails s在开发中运行时,CSS文件如上所示出现而不是被正确替换.
我试图把config.assets.compile = true在/config/environments/development.rb,但这并没有帮助.
有任何想法吗?谢谢.
ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline
虽然问题的标题与以前的标题非常相似,但我的问题似乎有所不同.
简而言之,js清单中的第一项包含两次.
这是我/app/assets/javascript/application.js在Rails 3.1应用程序中的整个文件:
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require autocomplete-rails
//= require utilities
Run Code Online (Sandbox Code Playgroud)
这是渲染页面源代码的片段:
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/autocomplete-rails.js?body=1" type="text/javascript"></script>
<script src="/assets/utilities.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
请注意,如果我向上移动任何其他行的顶部,application.js如下所示:
//= require utilities
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require autocomplete-rails
Run Code Online (Sandbox Code Playgroud)
它总是第一个被包含两次的项目!
<script src="/assets/utilities.js?body=1" type="text/javascript"></script>
<script src="/assets/utilities.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script …Run Code Online (Sandbox Code Playgroud) 我遇到了在Heroku上部署的问题,在rake任务中失败了
rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
在底部是我积累的错误
该错误发生在uglifier.
我怀疑这个问题可能与日历中包含许多本地化有关.
我通过设置来解决错误:
# Compress JavaScripts and CSS
config.assets.compress = false
Run Code Online (Sandbox Code Playgroud)
当临时文件被清理时,我无法检查文件.我也无法让RubyMine中的调试器停在断点处.
如果这是一个错误的任何想法?有什么办法让临时文件不被删除?任何使RubyMine调试器在rake任务上工作的方法(是的,使用EAP 112-291尝试了显而易见的事情.
rake资产:预编译:所有RAILS_ENV =生产RAILS_GROUPS =资产佣金中止!意外的字符''(行:21454,col:0,pos:641761)
新的JS_Parse_Error(/tmp/execjs20111231-15374-1fve7h4.js:497:22)在js_error(/tmp/execjs20111231-15374-1fve7h4.js:505:15)处于parse_error(/ tmp/execjs20111231-15374-1fve7h4)时出错. js:596:17)在Object.next_token [作为输入](/tmp/execjs20111231-15374-1fve7h4.js:839:17)at next(/tmp/execjs20111231-15374-1fve7h4.js:943:37)at Object .semicolon [as 1](/tmp/execjs20111231-15374-1fve7h4.js:986:38)在prog1(/tmp/execjs20111231-15374-1fve7h4.js:1527:28)的simple_statement(/ tmp/execjs20111231-15374-) 1fve7h4.js:1123:35)/tmp/execjs20111231-15374-1fve7h4.js:1031:35 attmp/execjs20111231-15374-1fve7h4.js:1510:32
安装Resque gem并运行worker后,我的app现在会产生资产管道错误:
Sass:SyntaxError:要导入的文件未找到或不可读
我创建了一个新的分支,并将问题缩小到运行Resque工作者.我只改变了三个文件.以下是重现的步骤:
1)将Resque gem添加到Gemfile:
gem 'resque'
Run Code Online (Sandbox Code Playgroud)
2)创建Resque rake任务:
# lib/resque.rake
require 'resque/tasks'
task "resque:setup" => :environment do
ENV['QUEUE'] = '*'
Resque.before_fork = Proc.new { ActiveRecord::Base.establish_connection }
end
Run Code Online (Sandbox Code Playgroud)
3)将一个worker添加到Procfile:
web: bundle exec rails server -p $PORT thin
worker: bundle exec rake resque:work
Run Code Online (Sandbox Code Playgroud)
我有一种感觉,问题是工人正试图加载我的所有资产.这是我不想要的,因为它只是一个后台进程.我甚至没有运行Resque前端,所以问题与此无关.
我在Rails 4.0.2上,仍然只在本地开发.
没有做任何事情(据我所知)我收到以下错误消息:"文件结束到达",并在错误页面中将以下行标记为红色:
<%= stylesheet_link_tag "application", :media => "all" %>
Run Code Online (Sandbox Code Playgroud)
我已经尝试删除所有css规则,但这并没有改变任何东西.
只有在注释掉该行时,错误才会停止.
如果有任何帮助,我的config/development.rb:
Verksam::Application.configure do
config.cache_classes = false
config.eager_load = false
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_mailer.raise_delivery_errors = false
config.active_support.deprecation = :log
config.active_record.migration_error = :page_load
config.assets.debug = true
end
Run Code Online (Sandbox Code Playgroud) 我刚刚在AWS EC2上将我的nginx从1.4.2(/ usr/local)升级到1.4.7(yum).我现在在客户端出现了一对错误:
GET https://subdomain.mysite.com/assets/application.css net::ERR_CONTENT_LENGTH_MISMATCH
GET https://subdomain.mysite.com/assets/application.js net::ERR_CONTENT_LENGTH_MISMATCH
Run Code Online (Sandbox Code Playgroud)
我对此感到茫然,谷歌并没有太多的帮助.关于从哪里开始的任何想法?所有帮助赞赏.可以从手动安装切换到yum安装吗?
ruby-on-rails nginx amazon-web-services unicorn asset-pipeline
我是Ruby和ROR框架的新手。我尝试使用JQuery创建Web应用程序。我的步骤是:
//= require jquery2添加到application.js文件<%= javascript_include_tag "application" %>到application.html.erb文件中当我尝试在浏览器中查看页面时,看到以下错误消息:
Sprockets::Rails::Helper::AssetNotFound in LandingPage#index
The asset "application.js" is not present in the asset pipeline.
<%= javascript_include_tag "application" %>
Run Code Online (Sandbox Code Playgroud)
我做错了什么?我在Google上搜索了此错误,但没有找到任何好的解释。