Загрузить изображение с компьютера в активы Shopify [rails]

Я разрабатываю приложение Shopify с рельсами, которое изменяет текущую тему магазина продавца.

Я пытаюсь создать форму для загрузки изображения (локального файла с вашего компьютера) из приложения и сохранить его непосредственно в теме / активах.

Я пытался с этим:

контроллер:

 def uploadImage
  if request.post?
    p = ShopifyAPI::Asset.new
    p.key = "assets/image.png"
    p.attach(params[:image])
    p.save
  end
 end

Посмотреть:

<form method="POST" action="uploadImage">
    <input name="authenticity_token" value="<%= form_authenticity_token %>" type="hidden">     
       <label>Upload Image</label>
       <input type="file" name="image">            
    <button type="submit" name="button">Upload</button>
    </div>
</form>

Но это не работает, есть идеи?

Спасибо.

1 ответ

На странице документации нет POST конечная точка, то есть ресурс не может быть создан сам по себе, он должен принадлежать теме

Документация может быть не полной по этому вопросу. Варианты можно сравнить, поскольку они должны принадлежать продукту; и для этой конкретной части они документируют POST /admin/products/#{id}/variants.json (они должны были документировать POST /admin/themes/#{id}/assets.json для активов)

У вас есть решение в исходном коде, вам нужно указать идентификатор темы, так что это должно работать:

p = ShopifyAPI::Asset.new(key: "assets/image.png", theme_id: _your_theme_id)
p.attach(params[:image])
p.save

Не пробовал, поэтому вам может понадобиться сначала сохранить файл локально и заменить строку вложения в вашем коде следующим текстом:

p.attach(File.read('local/path/to/your/file.ext'))

посмотреть здесь

Другие вопросы по тегам