Shopify应用程序 - 如何使用带有ruby on rails的app-proxy包含资产

时间:2018-05-04 13:44:46

标签: ruby-on-rails shopify asset-pipeline shopify-app

我正在使用ruby on rails构建shopify app-proxy。我正在使用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找不到错误。目前我正在将资产文件放入商店的主题,这似乎并不理想。

1 个答案:

答案 0 :(得分:0)

不要跳过布局

如果您想在主题<head>中插入自己的js和css以及其他所有内容,请不要设置layout: false。 Shopify将抓取并将您的资产附加到主题中。

<强> 404&#39;可能的原因:错误的资产主机

查看返回404的请求并验证资产主机是您自己的自定义域还是heroku域,而不是Shopify商店的域。以下是检查方法:

  1. 打开您喜欢的浏览器,打开开发工具,然后转到&#34;网络&#34;标签。
  2. 找到您的js和css 404请求。
  3. 如果请求转到https://the-shopify-store-domain.com/assets/application-3b57310f71432b97ccf86f51aawtert735dwtertbd9783ed06a5296871536a24.css,那么这意味着它正在错误的域中查找资产。相反,它应该向您自己的域发出请求,例如:https://your-own-name.herokuapp.com/assets/application-3b57310f71432b97ccf86f51aawtert735dwtertbd9783ed06a5296871536a24.css
  4. <强>解决方案

    由于这是一个代理应用,主机域将更新到Shopify商店的域而不是原始源。因此,您需要具体说明资产的存储位置。幸运的是,您可以通过将资产主机配置更改为您自己的主机来轻松地在Rails中执行此操作:

    config.action_controller.asset_host = "https://your-custom-domain-or-herokuapp-domain.com"
    

    提示:默认情况下,此设置在production.rb文件中的新rails应用程序中已注释掉。

    希望这有帮助!