0

我试图通过 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上

什么不见​​了?

4

0 回答 0