我试图通过 shopify-app gem 中包含的 shopify-api 向 shopify-store 注入一个新页面。我将 gem 的身份验证添加到我的控制器中,这非常适合 GET 请求。不知何故,POST方法不起作用。
方法 inject_page_method 应在我的 create 方法中调用,然后将表示第二个 POST 请求。
我很困惑,因为 GET 方法已经起作用了。所以我想,gem 像这样为我路由这个端点:
def inject_page_method
@create_new_page = ShopifyAPI::Page.new(:title => "test", :body_html =>"<h1>Test</h1>")
@create_new_page.save
end
helper_method :inject_page_method
发现这不起作用我尝试了一个完整的端点请求:
def create_new_page
page_data = {
"page": {
"title": "Test",
"body_html": "<h1>Test succeded</h1>"
}
}
@json_request_url = @shop_domain + "/admin/api/2020-07/pages.json"
Rails.ajax({
type:"POST",
url:@json_request_url,
data:page_data
})
end
Heroku logs --tail 告诉我,该方法是 POST,这很好,但我得到一个 status=500 并出现以下错误:
NoMethodError (undefined method `+' for nil:NilClass):
app/controllers/my_controller.rb:101:in `create_new_page'
app/controllers/my_controller.rb:37:in `create'
当我将@json_request_url 的串联更改为:
@json_request_url = "#{@shop_domain}/admin/api/2020-07/pages.json"
我得到一个状态 500:
NoMethodError (undefined method `ajax' for Rails:Module):
这是不可能的,因为 application.js 中同时需要 Jquery 和 Rails/ujs
编辑:这是在rails 6上
什么不见了?