我正在开发一个带有rails的Shopify App,它修改了商家商店的当前主题。
我正在尝试创建一个表单来从应用程序上传图像(来自您的计算机的本地文件)并将其直接保存在主题/资产中。
我试过这个:
控制器:
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>
但它不起作用,任何想法?
谢谢。
On the documentation page,没有POST
端点,意思是,资产不能自己创建,它必须由主题拥有
该文档可能无法完成。可以比较变体,因为它们必须由产品拥有;对于这个特定的部分,他们确实记录了POST /admin/products/#{id}/variants.json
(他们应该记录资产的POST /admin/themes/#{id}/assets.json
)
You have your solution in the code source,你需要指定主题id,所以这应该工作:
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'))