요구가 AJAX인지 아닌지를 Rails가 검출합니다.
제 액션에서는 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
체크할 수 있습니다.header[X-Requested-With]AJAX 요청인지 확인합니다.여기 그것을 하는 방법에 대한 좋은 기사가 있다.
다음은 예를 제시하겠습니다.
if request.xhr?
# respond to Ajax request
else
# respond to normal request
end
사용하시는 경우:remote => true링크 또는 양식에서 다음을 수행할 수 있습니다.
respond_to do |format|
format.js { #Do some stuff }
또한 response_to block 전에 콜을 통해 확인할 수도 있습니다.request.xhr?.
업데이트:
Rails 6.1.0에서는xhr?()는 실제로 부울값을 반환합니다.
원답:
의사가 그 요청.xhr이라고 하던데요?
Returns true if the “X-Requested-With” header contains “XMLHttpRequest”....
단, 다음 점에 주의해 주십시오.
request.xhr?
=~에 따라 문서에서 말하는 BOUAL 값이 아닌 숫자 또는 0 값을 반환합니다.
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
사용하는 것을 좋아합니다.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
request.xhr?
이 값이 0을 반환하면 Ajax 요청을 의미하고 반환되지 않으면 0을 반환합니다.
사용하시는 경우:remote => true링크, 양식에서, 당신의 응답은 HTML, JSON 등이 아닌 js 형식으로 올 것입니다.
def action
@model = Model.find(params[:id])
respond_to do |format|
format.js
if (wasAJAXRequest()) #How do I do this?
format.html #action.html.erb
else
format.html {redirect_to root_url}
end
end
end
또한 액션에 적합한 js 파일을 작성해야 합니다.이 경우 액션명은 액션입니다.파일명은 다음과 같습니다.action.js.erb또, 액션 코드를 내부로 이동합니다.action.js.erb파일
언급URL : https://stackoverflow.com/questions/8220701/rails-detect-if-request-was-ajax
'programing' 카테고리의 다른 글
| 리액트 훅 - 상태가 변경되지 않았는데도 useEffect가 실행됩니다. (0) | 2023.03.25 |
|---|---|
| 모든 이력 스테이트에 대해 react-router routed-component를 유지합니다. (0) | 2023.03.25 |
| jQuery ajax 업로드 파일(asp.net mvc) (0) | 2023.03.25 |
| WordPress 블로그 페이지 수가 작동하지 않음 (0) | 2023.03.25 |
| 바닥글의 wp_enqueue_script (0) | 2023.03.25 |