Ruby on rails 轨道';Can';t验证CSRF令牌的真实性';在'ShopifyAPI::Product.delete()`,但在'ShopifyAPI::Product.find()上工作`

Ruby on rails 轨道';Can';t验证CSRF令牌的真实性';在'ShopifyAPI::Product.delete()`,但在'ShopifyAPI::Product.find()上工作`,ruby-on-rails,shopify,shopify-app,Ruby On Rails,Shopify,Shopify App,我正在为Shopify创建一个公共的嵌入式应用程序,目标很简单:检索缺货的产品列表,并让所有者选择删除它们。我正在发出一个API请求,以查找缺货的产品,这很好。虽然当我试图删除产品时,我得到了“无法验证CSRF…” 我运行的是rails 5.2.3和ruby 2.5.0,我尝试过使用不同版本的rails,确保我的布局中有,并且应用程序在授权url中有“write_products”权限 我是rails新手,所以我希望这是我犯的一个简单错误的结果 这是我的路线。rb: Rails.applicat

我正在为Shopify创建一个公共的嵌入式应用程序,目标很简单:检索缺货的产品列表,并让所有者选择删除它们。我正在发出一个API请求,以查找缺货的产品,这很好。虽然当我试图删除产品时,我得到了“无法验证CSRF…”

我运行的是rails 5.2.3和ruby 2.5.0,我尝试过使用不同版本的rails,确保我的布局中有,并且应用程序在授权url中有“write_products”权限

我是rails新手,所以我希望这是我犯的一个简单错误的结果

这是我的路线。rb:

Rails.application.routes.draw do
  root :to => 'home#index'
  mount ShopifyApp::Engine, at: '/'
  post '/destroy', to: 'home#destroy'
end
家庭控制器:

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

  def destroy
    params[:product_ids].each do |product_id|
      puts product_id
      ShopifyAPI::Product.delete(product_id)
    end
  end
end
编辑:

我将路线更新为:
post'/home',至:“home#destroy”

并使用
form_tag
方法创建我的表单,该表单向表单中添加了身份验证令牌:

<%= form_tag(home_path) do %>
<% @products.each do |product| %>
  <% if product.variants.all? { |variant| variant.inventory_quantity == 0 } %>
    <input type="checkbox" name="product_ids[]" value="<%=product.id%>"><%= product.title %></input>
  <% end %>
<% end %>
<button type="submit">delete products</button>
<% end %>
</form>

删除产品

它解决了我的问题

我想你忘了csrf\u meta\u标签中的
=


我想你忘了csrf\u meta\u标签中的
=


谢谢,我刚刚更新了问题,因为我发现了问题所在。我应该写完整的声明,而不是用速记来指代csrf\u meta\u标签
。布局文件中存在
=
。谢谢,我刚刚更新了问题,因为我发现了问题所在。我应该写完整的声明,而不是用速记来指代csrf\u meta\u标签
。布局文件中存在
=
2019-06-01T16:47:00.028409+00:00 app[web.1]: I, [2019-06-01T16:47:00.028316 #4]  INFO -- : [f88f9c69-7c6c-4a31-a386-f6916c295700] Started POST "/destroy" for 24.96.97.148 at 2019-06-01 16:47:00 +0000
2019-06-01T16:47:00.029561+00:00 app[web.1]: I, [2019-06-01T16:47:00.029496 #4]  INFO -- : [f88f9c69-7c6c-4a31-a386-f6916c295700] Processing by HomeController#destroy as HTML
2019-06-01T16:47:00.029628+00:00 app[web.1]: I, [2019-06-01T16:47:00.029573 #4]  INFO -- : [f88f9c69-7c6c-4a31-a386-f6916c295700]   Parameters: {"product_ids"=>["1594488094775"]}
2019-06-01T16:47:00.029867+00:00 app[web.1]: W, [2019-06-01T16:47:00.029808 #4]  WARN -- : [f88f9c69-7c6c-4a31-a386-f6916c295700] Can't verify CSRF token authenticity.
<%= form_tag(home_path) do %>
<% @products.each do |product| %>
  <% if product.variants.all? { |variant| variant.inventory_quantity == 0 } %>
    <input type="checkbox" name="product_ids[]" value="<%=product.id%>"><%= product.title %></input>
  <% end %>
<% end %>
<button type="submit">delete products</button>
<% end %>
</form>