ruby-on-rails - 对第三方 js 库的 rails 4 asset pipeline 感到困惑

标签 ruby-on-rails heroku ruby-on-rails-4 asset-pipeline

我有两个问题,但我猜它们都会导致相同的答案。

它们都与静态图像有关,显示在开发模式而不是生产模式 (heroku) 中。

案例一:

在我的 model.rb 中

has_attached_file :avatar, styles: {
    thumb: '32x32#',
    medium: '512x512#'
}, 
:default_url => ActionController::Base.helpers.asset_path('/assets/avatar_:style.png') ## <- This line (#1)

案例二:

在我的 view.html.haml 中,我有内联 javascript

:javascript
 $('.star').raty({
    path: '/assets', ### <- This line (#2)
    readOnly: true,
    noRatedMsg : "I haven't been rated yet!",
    score: function() {
    return $(this).attr('data-score');
  }
});

案例 1 中,如果用户没有上传个人资料图片(使用回形针),我将尝试实现一个默认图片,其中包含两个图片 avatar_thumb.pngavatar_medium.png 位于 /app/assets/images

案例 2 中,我尝试使用第三方库实现 5 星评级功能 raty ,这需要“star”图像。我也在 /app/assets/images 中放置了这个库附带的三个图像。

问题:在这两种情况下,图像都是在开发模式下看到的,但当我部署到 Heroku 时却看不到。我该如何解决这个问题。

P.S.:我对 Rails 完全陌生,如有任何帮助,我们将不胜感激。

最佳答案

Assets 管道在这里并没有让你的生活变得轻松 - Paperclip 假设 default_url 是可以用所需值替换 :style 部分的东西,但这可以' 起作用,因为这显然也会改变文件名的指纹部分。

这里最简单的做法是不对这些图像使用 Assets 管道。您实际上不必为任何事情使用 Assets 管道,与 javascript 或 css 文件相比,图像的好处非常小。

为此,将图像移动到 public/images 中。然后,对于第一种情况,将默认 url 更改为

/images/avatar_:style.png

对于第二种情况,将路径设置为 /images

如果你愿意,你可以让第二种情况与 Assets 管道一起工作——比如

:javascript
  $('.star').raty({
    readOnly: true,
    starHalf: '#{asset_path('star-half.png')}',
    starOff: '#{asset_path('star-off.png')}',
    starOn: '#{asset_path('star-on.png')}',
    cancelOn: '#{asset_path('cancel-on.png')}',
    cancelOff: '#{asset_path('cancel-off.png')}',
    noRatedMsg : "I haven't been rated yet!",
    score: function() {
      return $(this).attr('data-score');
    }
  });

关于ruby-on-rails - 对第三方 js 库的 rails 4 asset pipeline 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24375009/

相关文章:

javascript - 如何发送[:commit] param with remote: true form_for

ruby-on-rails - Apple 使用 Heroku 推送通知

mysql - 与 Rails 一起迷失 has_many : through multiple search

html - 如何在 Ruby on Rails 中通过参数添加 <body> 类

ruby-on-rails - 发送重置密码指令后重定向设计

javascript - "Where"Websocket 服务器托管在 Heroku 上吗?

ruby-on-rails - 在 heroku 控制台上创建用户 Ruby on Rails 教程,作者:Michael Hartl

ruby-on-rails - Mongoid 5.0 - Rails 4 - Finder 停止工作

charts - 在 Rails 4.0 中使用 Chartkick

ruby-on-rails - 避免服务器卡在 SSE(服务器发送事件)