[RUBY-ON-RAILS] 요청이 AJAX 인 경우 레일 감지
RUBY-ON-RAILS요청이 AJAX 인 경우 레일 감지
이 Ajax 요청에서 호출 된 경우 내 행동에서 나는 처리에만 응답하고 싶습니다. 어떻게 확인합니까?
나는 이런 일을하고 싶지 :
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
해결법
-
==============================
1.당신은 헤더를 확인할 수 있습니다 [X는-요청-으로] 그것이 AJAX 요청 있는지. 여기에 그것을 수행하는 방법에 대한 좋은 기사입니다.
당신은 헤더를 확인할 수 있습니다 [X는-요청-으로] 그것이 AJAX 요청 있는지. 여기에 그것을 수행하는 방법에 대한 좋은 기사입니다.
다음은 그 예이다 :
if request.xhr? # respond to Ajax request else # respond to normal request end
-
==============================
2.당신이 사용하는 경우 : 원격 => 당신의 연결 또는 양식에 사실, 당신이 할 것입니다 :
당신이 사용하는 경우 : 원격 => 당신의 연결 또는 양식에 사실, 당신이 할 것입니다 :
respond_to do |format| format.js { #Do some stuff }
또한 request.xhr를 호출하여 respond_to 블록 전에 확인할 수 있습니다?
-
==============================
3.워드 프로세서는 request.xhr 말?
워드 프로세서는 request.xhr 말?
Returns true if the “X-Requested-With” header contains “XMLHttpRequest”....
그러나 조심
request.xhr?
숫자 반환 또는 전무 값이 아닌 문서로 BOOLEAN 값은 = ~에 따라, 말한다.
irb(main):004:0> /hay/ =~ 'haystack' => 0 irb(main):006:0> /stack/ =~ 'haystack' => 3 irb(main):005:0> /asfd/ =~ 'haystack' => nil
그것은이 기반으로 :
# File actionpack/lib/action_dispatch/http/request.rb, line 220 def xml_http_request? @env['HTTP_X_REQUESTED_WITH'] =~ /XMLHttpRequest/ end
그래서
env['HTTP_X_REQUESTED_WITH'] =~ /XMLHttpRequest/ => 0
워드 프로세서 :
http://apidock.com/rails/v4.2.1/ActionDispatch/Request/xml_http_request%3F
-
==============================
4.나는 before_action 필터를 사용하여 좋아한다. 여러 작업에 대해 동일한 필터 / 허가를 필요로 할 때 그들은 특히 좋은입니다.
나는 before_action 필터를 사용하여 좋아한다. 여러 작업에 대해 동일한 필터 / 허가를 필요로 할 때 그들은 특히 좋은입니다.
class MyController < AuthController before_action :require_xhr_request, only: [:action, :action_2] def action @model = Model.find(params[:id]) end def action_2 # load resource(s) end private def require_xhr_request redirect_to(root_url) unless request.xhr? end end
-
==============================
5.
request.xhr?
이 반환 0 다음은 아약스 요청을 의미하는 경우, 다른 사람이 전무를 반환합니다
from https://stackoverflow.com/questions/8220701/rails-detect-if-request-was-ajax by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] force_ssl 레일에 무엇입니까? (0) | 2020.02.13 |
---|---|
[RUBY-ON-RAILS] 루비 1.9.3로 루비 - 디버그? (0) | 2020.02.13 |
[RUBY-ON-RAILS] 컨트롤러에서 실행 레이크 작업 (0) | 2020.02.13 |
[RUBY-ON-RAILS] 어떻게 레일에서 기본값을 설정하는 방법? (0) | 2020.02.13 |
[RUBY-ON-RAILS] 변수를 사용 YAML (0) | 2020.02.13 |