Как использовать Asset API для доступа к жидкому файлу через рубильник shopify_api gem ruby - PullRequest
0 голосов
/ 11 мая 2018

Я новичок в разработке приложений shopify и столкнулся с проблемой при доступе к файлу шаблона, например: layout / theme.liquid с использованием драгоценного камня shopify_api.

Я действительно могу правильно настроить гем в приложении и правильно его развернуть. Я могу получить доступ к продуктам и веб-крюкам, а также весь список активов см. мой код:

Код контроллера

class HomeController < ShopifyApp::AuthenticatedController
  def index
    # below three access for product webhook and full asset are working fine
    @products = ShopifyAPI::Product.find(:all, params: { limit: 10 })
    @webhooks = ShopifyAPI::Webhook.find(:all)
    @assets   = ShopifyAPI::Asset.find(:all, params: {"theme_id": 194896516}) 
    # not working below this line   
    @templates = ShopifyAPI::Asset.all(:params => {:theme_id=> 194896516}).find{|asset| asset.attributes[:key] == "layout/theme.liquid"} 
  end
end

Шаблон, который отображает значение

<% content_for :javascript do %>
  <script type="text/javascript">
    ShopifyApp.ready(function(){
      ShopifyApp.Bar.initialize({ title: "Home" });
    });
  </script>
<% end %>
<h2>Products</h2>

<ul>
  <% @products.each do |product| %>
    <li><%= link_to product.title, "https://#{@shop_session.url}/admin/products/#{product.id}", target: "_top" %></li>
  <% end %>
</ul>

<hr>

<h2>Webhooks</h2>

<% if @webhooks.present? %>
  <ul>
    <% @webhooks.each do |webhook| %>
      <li><%= webhook.topic %> : <%= webhook.address %></li>
    <% end %>
  </ul>
<% else %>
  <p>This app has not created any webhooks for this Shop. Add webhooks to your ShopifyApp initializer if you need webhooks</p>
<% end %>

<hr>

<h2>Assets</h2>
<% if @assets.present? %>
  <% @assets.each do |asset| %>
    <li><%=  asset.key %></li>
    <!-- <li><% asset.value %></li> -->
  <% end %>
<% else %>
    <p>This app has not created any webhooks for this Shop. Add webhooks to your ShopifyApp initializer if you need webhooks</p>
<% end %>

<h2>Template</h2>
<% if @templates.present? %>
<% @templates.each do |template| %>
    <li><%=  template.key %></li>
     <li><% template.value %></li>
  <% end %>
<% else %>
    <p>This app has not created any webhooks for this Shop. Add webhooks to your ShopifyApp initializer if you need webhooks</p>
<% end %>

Я также попробовал следующие варианты на моем контроллере, но не повезло

 @templates   = ShopifyAPI::Asset.find(:all, params: {"theme_id": 194896516, "asset[key]": 'layout/theme.liquid'})

Также

@templates   = ShopifyAPI::Asset.find('layout/theme.liquid',params: {"theme_id": 194896516})

Я правильно установил область действия для read_themes. Я проверил документацию и попробовал тоже, но не смог. Есть ли что-то, что я пропускаю или шаблон изменился за эти годы, так как примеры на документации не работают.

Ошибка, которую я увидел в приложении: https://prnt.sc/jgglbf.

Я надеюсь, что кто-нибудь может мне помочь с этим. Очень ценю изучение этого вопроса.

Спасибо

...