rails form_with form_tag form_for form fields_for collection ruby-on-rails ruby-on-rails-5

ruby-on-rails - form_tag - form_with rails 5



verificar_autenticidad_título no ha sido definido (3)

Ruby versión 2.2.4, Rails versión 5.0.0.1.

Me estoy quedando atascado en una parte de un tutorial donde se prueba el inicio de sesión con curl . Me sale un error

ArgumentError (no se ha definido la devolución de llamada de process_action: Verify_authenticity_token).

Utilicé este código en session_controller:

skip_before_action :verify_authenticity_token, :if => Proc.new { |c| c.request.format == ''application/json'' }

¿Alguien sabe la respuesta?


Compruebe si su ApplicationController tiene una llamada a protect_from_forgery siguiente manera:

class ApplicationController < ActionController::Base protect_from_forgery with: :exception end

Esencialmente, llamar a protect_from_forgery agrega verify_authenticity_token a la lista before_filter , que puede omitir en los otros controladores.

Consulte la documentación de protect_from_forgery para obtener más información.


Después de actualizar a Rails 5 y desplegar a Heroku, cometí este error. No pude reproducirlo en desarrollo.

En los documentos API se da el ejemplo.

class ApplicationController < ActionController::Base protect_from_forgery unless: -> { request.format.json? } end

Para mí, agregar el a unless: -> { request.format.json? } unless: -> { request.format.json? } como el anterior arregló mi bomba de pila. raise: false lamentablemente no lo hizo.


Después de actualizar a Rails 5, llegué a este error. Descubrí que si se llama a skip_before_action varias veces con el mismo nombre de método, se generará esta excepción.

Mi solución fue agregar el parámetro raise: false , a la segunda vez que se llamó a skip_before_filter .

Así se vería así:

skip_before_action :your_method_name, raise: false