我的表单出现问题
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
这一事实有关。不过,这只是猜测。