标签: asset-pipeline

Rails 3.1:动态链接到资产管道中的图像?

我有我以前保持在500+〜旗图像public/images/flags/public/images/flags_small/.对于我的国家/地区模型中的每个国家/地区,我存储了:iso_code与其对应的标志图像的名称相同的内容.例如,mx.png是墨西哥旗的名称,因为mx是墨西哥的双字母ISO代码.

我以前有一个帮助方法,它将返回html,根据国家的iso代码显示图像,以及我是否想要大或小的标志.

使用Rails 3.1,为了符合资产管道,我的印象是这些图像应该进入app/assets/images文件夹.以下是:

  1. 我可以在其中维护子文件夹吗?
  2. 如何使用image_tag显示适当的图像?

编辑:解决方案 下面的答案是正确的,但我不想每次都输入那么多代码,所以我创建了两个辅助方法:

  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)

image ruby-on-rails-3.1 asset-pipeline

4
推荐指数
1
解决办法
2478
查看次数

Rails 3.1资产管道 - IE未在开发中加载所有样式表

在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

4
推荐指数
1
解决办法
1686
查看次数

将资产管道与文件组一起使用

在资产管道的Rails文档中,它指出:

Rails 3.1及更高版本中的默认行为是将所有文件连接成一个主文件,每个文件用于JS和CSS.但是,如果需要,您可以分隔文件或文件组(见下文)

您如何将文件分成如图所示的组?例如,如果我有一个也有管理区域的应用程序,我想创建三个编译文件:

shared.css(前端和后端都使用此)
application.css(仅限前端)
admin.css(仅限后端)

默认情况下将我的所有文件合并到application.css中.

ruby-on-rails ruby-on-rails-3.1 asset-pipeline

4
推荐指数
1
解决办法
1377
查看次数

Rails资产路径中的CSS未由ERB在开发中处理

我有一个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

4
推荐指数
1
解决办法
8038
查看次数

在Rails 3.1基于资产的应用程序中包含两次javascript

虽然问题的标题与以前的标题非常相似,但我的问题似乎有所不同.

简而言之,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)

javascript ruby-on-rails ruby-on-rails-3.1 asset-pipeline

4
推荐指数
1
解决办法
5204
查看次数

Rails 3.1 Asset Pipeline和Uglifier中可能存在的错误

我遇到了在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

heroku uglifyjs ruby-on-rails-3.1 sprockets asset-pipeline

4
推荐指数
1
解决办法
2776
查看次数

如何使用Rails 3.1和资产管道在Heroku上配置Resque

安装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前端,所以问题与此无关.

heroku resque ruby-on-rails-3.1 asset-pipeline

4
推荐指数
1
解决办法
1304
查看次数

EOF错误无处不在

我在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)

ruby-on-rails eof asset-pipeline ruby-on-rails-4

4
推荐指数
1
解决办法
1366
查看次数

application.css和application.js net :: ERR_CONTENT_LENGTH_MISMATCH

我刚刚在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

4
推荐指数
2
解决办法
3108
查看次数

资产管道中不存在资产“ application.js”

我是RubyROR框架的新手。我尝试使用JQuery创建Web应用程序。我的步骤是:

  1. 添加了gem'jquery-rails'并从命令行执行了bundle install命令
  2. 字符串已//= require jquery2添加到application.js文件
  3. 现在,我尝试将文件包含到页面中。然后将部分字符串添加<%= 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上搜索了此错误,但没有找到任何好的解释。

ruby ruby-on-rails asset-pipeline

4
推荐指数
4
解决办法
5835
查看次数