表格中的真实性令牌无效,即使它存在

时间:2016-02-16 15:23:21

标签: ruby-on-rails

我的表单出现问题

ActionController::InvalidAuthenticityToken

我的参数仍然存在

{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"ovSc3ZMU8fGTkHileMaQpchm2bAjNz+TO46xTfUFHqP2wckumC8tMefgUQ/UIHRb1323o9YeSDfQMxTAQhDdgg==", "driver_request"=>{"accepted"=>"true"}, "commit"=>"Accepted", "controller"=>"driver_requests", "action"=>"update", "driver_id"=>"1", "id"=>"40"}

表单看起来像这样,当我检查它时,它有一个隐藏的令牌字段:

    <%= form_for([current_driver, driver_request]) do |f| %>
      <%= f.hidden_field :accepted, value: true %>
      <%= f.submit 'Accepted', class: 'btn btn-primary' %>
    <% end %>

我认为问题可能来自于我呈现表单的方式。我正在使用rails 5,他们现在允许您访问ApplicationController,并且我正在调用部分模式,其中包含表单 - 如下所示:

 ApplicationController.renderer.render(partial: 'driver_requests/driver_request', locals: { driver_request: request, current_driver: request.driver })

现在显然我不想禁用真实性令牌,所以我试图找到一种方法来调试它 - 但坦率地说,我非常不确定如何解决这个问题 - 作为令牌实际存在。

更新:临时解决方案:

我通过使表单使用AJAX来实现这一点。我认为这与我从ApplicationController渲染部分并且部分因此无法获得csrf_meta_tag这一事实有关。不过,这只是猜测。

0 个答案:

没有答案