En su diseño, añadir esto antes de cualquier otra JS funciona:
<script>
function authToken() {
return '<%= form_authenticity_token if protect_against_forgery? -%>';
}
</script>
authToken
se codifica como una función de modo que es menos probable es que accidentalmente sobrescribe con otra JavaScript.
Alternativamente, a partir de los carriles 3, el token de autenticación está incrustado como una etiqueta <meta>
, que se puede leer con:
<script>
function authToken() {
return $('meta[name="csrf-token"]').attr('content');
}
</script>
En su principal JS, a continuación, puede llamar authToken()
, y va a volver su token de autenticidad como una cadena para incluir en sus llamadas Ajax. Por ejemplo, usando jQuery:
$.ajax({
type: 'PUT',
url: url,
data: {
foo: bar,
authenticity_token: authToken()
},
complete: function(data) {}
});
Tenga en cuenta que si utiliza los carriles integrado en un form_for
ayudante, se añade automáticamente el token de autenticidad en una entrada oculta. Si desea enviar todos los datos del formulario, incluyendo el token de autenticación oculta, puede simplemente usar:
var $form = $('form');
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
// "get" or "post"; overridden by Rails' hidden "_method"
// input value, e.g., "put"
data: $form.serialize(),
// Includes hidden "authenticity_token" and "_method" inputs
complete: function(data) {}
});
Este patrón es a menudo útil cuando ya ha escrito una forma que funciona sin JS, y usted' Estamos agregando una capa discreta de JS que simplemente envía los datos del formulario a través de Ajax.
¡Genial, gracias una tonelada! Trabajado como un encanto. –