Ratyrate stars 未在生产中加载(heroku)

Ratyrate stars not loading in production (heroku)

所以我通过添加

让 ratyrate 在开发中工作得很好
<%= javascript_include_tag 'ratyrate.js', "data-turbolinks-track" => false %>

到我的观点。在此之前,星星只会在直接访问 url 或刷新页面时加载。

现在我在 heroku 上部署我的应用程序时遇到了完全相同的问题(当通过 link 访问页面时星号未加载)!

我希望这是足够的信息(很乐意提供更多信息)并且有人遇到过这个 before/has 任何想法!谢谢!

已解决 - 查看答案

所以问题是我忘记了 运行 rake assets:precompile。问题中提到的开发解决方案应该可以。

解决方案

<%= javascript_include_tag 'ratyrate.js', "data-turbolinks-track" => false %> 添加到您视图中的头部(似乎 运行 更快)或正文标记。

同时将 Rails.application.config.assets.precompile += %w( ratyrate.js ) 添加到 config/initializers/assets.rb

然后确保你 运行 rake assets:precompile 避免看起来像我一样傻!

希望这对某人有所帮助:)

我的修复方法:

jquery.raty.js

jquery.raty.js 重命名为 jquery.raty.js.erb 并将图像选项替换为 asset_path,例如:

cancelOff : 'cancel-off.png'

会变成

cancelOff    : '<%= asset_path('cancel-off.png') %>'

raty_helper.rb

我已将 rating_for 方法从 raty helper 移动到我的一个 helpers 文件,无论如何我不得不重写一些东西,比如不允许用户评价自己没有开箱即用。

我在此文件中所做的更改:

star_path    = options[:star_path]    || ''
star_on      = options[:star_on]      || image_path('star-on.png')
star_off     = options[:star_off]     || image_path('star-off.png')
star_half    = options[:star_half]    || image_path('star-half.png')
cancel_on    = options[:cancel_on]    || image_path('cancel-on.png')
cancel_off   = options[:cancel_off]   || image_path('cancel-off.png')

基本上我删除了每个图像名称前的/,例如:

star_on      = options[:star_on]      || image_path('/star-on.png')

现在我可以推送到 heroku 并且它按预期工作,而无需 运行 在我的本地机器上预编译资产并将其全部推送到 heroku。

发生这种情况是因为图像位置未引用资产管道。我必须创建一个新的帮助程序文件来覆盖 rating_for 方法以从资产管道中提取图像。

  1. config/initializers
  2. 中创建一个新的辅助文件(raty_helper.rb
  3. 将 "module RatyHelper" 添加到新文件的第 1 行
  4. https://github.com/wazery/ratyrate/blob/master/lib/ratyrate/helpers.rb 中的第 2 行到第 144 行复制到您的新助手中。