Mise à jour :
A partir de Rails 6.1.0, xhr?()
renvoie effectivement (enfin) une valeur booléenne.
https://github.com/rails/rails/commit/0196551e6039ca864d1eee1e01819fcae12c1dc9#diff-60b77e427ea7ba142faa477fac10b8d0134cede4e35a3b1953c425200fadf1acL267-L269
Réponse originale :
Les docs disent que request.xhr ?
Returns true if the “X-Requested-With” header contains “XMLHttpRequest”....
Mais attention à ce que
request.xhr?
renvoie des valeurs numériques ou nulles et non des valeurs BOOLEAN comme le dit la docs, en accord avec =~.
irb(main):004:0> /hay/ =~ 'haystack'
=> 0
irb(main):006:0> /stack/ =~ 'haystack'
=> 3
irb(main):005:0> /asfd/ =~ 'haystack'
=> nil
C'est basé sur ça :
# File actionpack/lib/action_dispatch/http/request.rb, line 220
def xml_http_request?
@env['HTTP_X_REQUESTED_WITH'] =~ /XMLHttpRequest/
end
donc
env['HTTP_X_REQUESTED_WITH'] =~ /XMLHttpRequest/ => 0
Les docteurs :
http://apidock.com/rails/v4.2.1/ActionDispatch/Request/xml_http_request%3F