В своем действии я хочу ответить обработкой только в том случае, если она была вызвана из запроса 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
ruby-on-rails
ajax
Бритва Буря
источник
источник
remote: true
вызовами в новых версиях Rails, так как необходимые заголовки не устанавливаются.Если вы используете
:remote => true
в своих ссылках или формах, вы должны:Вы также можете проверить перед блоком response_to, позвонив
request.xhr?
.источник
$.ajax({dataType: 'html'})
это ajax, который отвечает с помощью HTML. Правильный способ сделать это - второй из упомянутых вамиrequest.xhr?
Документы говорят, что request.xhr?
Но ОСТЕРЕГАЙТЕСЬ, что
возвращает числовые или нулевые значения, а не БУЛЕВЫЕ значения, как говорится в документации, в соответствии с = ~.
Это основано на этом:
так
Документы:
http://apidock.com/rails/v4.2.1/ActionDispatch/Request/xml_http_request%3F
источник
nil
будет ложным.Мне нравится использовать
before_action
фильтры. Они особенно хороши, когда вам нужен один и тот же фильтр / авторизация для нескольких действий.источник
если это возвращает 0, это означает, что это запрос ajax, иначе он вернет ноль
источник