En mi acción, deseo responder solo con el procesamiento si fue invocado desde una solicitud AJAX. ¿Cómo lo reviso?
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
ruby-on-rails
ajax
Tormenta de afeitar
fuente
fuente
remote: true
llamadas estándar en versiones más recientes de Rails, ya que los encabezados necesarios no se configuran.Si está utilizando
:remote => true
sus enlaces o formularios, haría:También puede verificar antes del bloque respond_to llamando
request.xhr?
.fuente
$.ajax({dataType: 'html'})
es ajax que responde con HTML. La forma correcta de hacer esto es la segunda que mencionórequest.xhr?
Los documentos dicen que request.xhr?
Pero ten cuidado
devuelve valores numéricos o nulos, no valores BOOLEAN como dicen los documentos, de acuerdo con = ~.
Se basa en esto:
entonces
Los documentos:
http://apidock.com/rails/v4.2.1/ActionDispatch/Request/xml_http_request%3F
fuente
nil
es falso.Me gusta usar
before_action
filtros. Son especialmente agradables cuando necesita el mismo filtro / autorización para múltiples acciones.fuente
si esto devuelve 0, entonces significa que es una solicitud ajax, de lo contrario devolverá nil
fuente