ruby-on-rails - Shopify 应用程序 - 如何使用带有 ruby on rails 的应用程序代理来包含资产
问题描述
我正在使用 ruby on rails 构建一个 shopify 应用程序代理。我正在使用 shopify_app gem。
在我的控制器操作中,我有以下设置:
render layout: false, content_type: ‘application/liquid’
,以便应用程序嵌入到商店的 layout/theme.liquid 中。
我的问题是如何将资产拉入应用程序?我尝试使用以下方法将它们手动包含到模板文件中:
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
但唉,我得到 404 not found 错误。目前我正在将资产文件放入商店的主题中,这似乎并不理想。
解决方案
不要跳过布局
如果您想在主题中插入自己的 js 和 css<head>
以及其他所有内容,请不要设置layout: false
. Shopify 将抓取您的资产并将其附加到主题中。
404s 的可能原因:错误的资产主机
查看返回 404 的请求,并验证资产主机是您自己的自定义或 heroku 域,而不是 Shopify 商店的域。以下是您可以检查的方法:
- 打开您喜欢的浏览器,打开开发工具,然后转到“网络”选项卡。
- 找到您的 js 和 css 404 请求。
- 如果请求将发送到https://the-shopify-store-domain.com/assets/application-3b57310f71432b97ccf86f51aawtert735dwtertbd9783ed06a5296871536a24.css,那么这意味着它正在寻找错误域中的资产。相反,它应该向您自己的域发出请求,例如:https ://your-own-name.herokuapp.com/assets/application-3b57310f71432b97ccf86f51aawtert735dwtertbd9783ed06a5296871536a24.css
解决方案
由于这是一个代理应用程序,因此主机域将更新为 Shopify 商店的域,而不是原始源。因此,您需要具体说明资产的存储位置。幸运的是,您可以通过将资产主机配置更改为您自己的主机,在 Rails 中轻松做到这一点:
config.action_controller.asset_host = "https://your-custom-domain-or-herokuapp-domain.com"
提示:默认情况下,该设置在 production.rb 文件中的新 Rails 应用程序中被注释掉。
希望这可以帮助!
推荐阅读
- javascript - 206 部分内容请求中的内容范围和内容长度不正确
- html - 如何使用两个三元表达式分别设置 mat-icon 颜色和背景颜色?
- ios - 我得到一个黑屏,标签栏轮廓不包含任何项目
- perforce - 不在树的过滤视图中是什么意思?
- c++ - 传递 C++ void 指针
- ios - 在图层之上绘制#rect 核心图形?
- node.js - 如何让 gulp 在完成之前不完成任务?
- julia - 如何有条件地选择然后改变 DataFrame 的列?
- java - 如何在应用加载时在 ListView 上显示从 Firebase 实时数据库检索到的内容
- css - 使用 input-group-append 添加的图标似乎比输入框大