rails not form_with example ruby-on-rails ajax

ruby on rails - not - Los rieles detectan si la solicitud fue AJAX



rails-ujs (3)

En mi acción, solo deseo responder con el procesamiento si fue llamado desde una solicitud de AJAX. ¿Cómo lo verifico?

Quiero hacer algo como esto:

def action @model = Model.find(params[:id]) respond_to do |format| if (wasAJAXRequest()) #How do I do this? format.html #action.html.erb else format.html {redirect_to root_url} end end


Puede verificar un header[X-Requested-With] para ver si se trata de una solicitud AJAX. Aquí hay un buen article sobre cómo hacerlo.

Aquí hay un ejemplo:

if request.xhr? # respond to Ajax request else # respond to normal request end


Sé consciente de

request.xhr?

devuelve valores numéricos o nulos, no valores BOOLEAN, como dicen los documentos, de acuerdo con = ~.

irb(main):004:0> /hay/ =~ ''haystack'' => 0 irb(main):006:0> /stack/ =~ ''haystack'' => 3 irb(main):005:0> /asfd/ =~ ''haystack'' => nil

Está basado en esto:

# File actionpack/lib/action_dispatch/http/request.rb, line 220 def xml_http_request? @env[''HTTP_X_REQUESTED_WITH''] =~ /XMLHttpRequest/ end

asi que

env[''HTTP_X_REQUESTED_WITH''] =~ /XMLHttpRequest/ => 0

Los documentos:

http://apidock.com/rails/v4.2.1/ActionDispatch/Request/xml_http_request%3F


Si está utilizando :remote => true en sus enlaces o formularios, haría:

respond_to do |format| format.js { #Do some stuff }

También puede consultar antes del bloque responder_ a llamando a request.xhr? .