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 方法以从资产管道中提取图像。
- 在config/initializers
中创建一个新的辅助文件(raty_helper.rb)
- 将 "module RatyHelper" 添加到新文件的第 1 行
- 将 https://github.com/wazery/ratyrate/blob/master/lib/ratyrate/helpers.rb 中的第 2 行到第 144 行复制到您的新助手中。
所以我通过添加
让 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 方法以从资产管道中提取图像。
- 在config/initializers 中创建一个新的辅助文件(raty_helper.rb)
- 将 "module RatyHelper" 添加到新文件的第 1 行
- 将 https://github.com/wazery/ratyrate/blob/master/lib/ratyrate/helpers.rb 中的第 2 行到第 144 行复制到您的新助手中。