完成500个内部服务器错误和ActiveResource :: ForbiddenAccess

时间:2019-03-29 09:27:38

标签: ruby-on-rails ruby heroku ruby-on-rails-5 shopify

我正在使用Shopify,Ruby on Rails和Heroku postgres,但不断出现此错误:

  

ActiveResource :: ForbiddenAccess(失败。响应代码=403。响应消息=禁止。)并在210毫秒内完成500个内部服务器错误(ActiveRecord:1.3毫秒)

我试图将Shopify的数据收集到另一个来自Rails的应用程序中,并且尝试迁移数据库和heroku日志以找出问题,但没有找到问题。

这是我的控制器代码

def index
  @products = ShopifyAPI::Product.find(:all, params: { limit: 10 })
  @webhooks = ShopifyAPI::Webhook.find(:all)
end

def show
  @products = ShopifyAPI::Product.find(params[:id])
end

def new
  @products = ShopifyAPI::Product.new
end

def create
  @products = ShopifyAPI::Product.new(params.require(:product).permit(:title))
  if @products.save
    redirect_to home_index
  else
    render :index
  end 
end

这是我的路线

Rails.application.routes.draw do
  resources :home
  post 'home/new', to: 'home#create'
end

我的new.html.erd

<%= form_for :product do |f| %>
  <p> 
    <%= f.label :name %>
    <%= f.text_field :title %>
  </p> 

  <p>
    <%= f.submit %>
  </p>
<% end %>

这是我的index.html.erd

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

1 个答案:

答案 0 :(得分:0)

简单。您正在对API进行调用,但未通过身份验证,因此您将获得403。您需要首先打开一个经过身份验证的会话,然后再对API进行调用。例如:

session = ShopifyAPI::Session.new(shop, token)
ShopifyAPI::Base.activate_session(session) if session.valid?