Ответ 1
Вам не нужно добавлять этот параметр, request.xhr?
вернет true в вашем контроллере, когда будет Ajax-запрос. Просто используйте это, чтобы решить, нужно ли отображать макет или нет.
Я искал вокруг и не смог найти решение для этого типа механика. Я хочу загружать все страницы, как правило, в Rails, но всякий раз, когда я выполняю запрос ajax, я просто хочу вернуть страницу без макета. Поэтому в любое время, когда я делаю ajax requst, я могу добавить ?page=true
или что-то подобное в этих строках, и Rails просто вернет страницу без макета.
Возможно ли это? Есть ли лучший способ сделать это, что мне не хватает?
Спасибо за любую помощь!
Рабочий код окончательного решения:
В контроллере все, что вам нужно сделать, - добавить небольшую логику в format.html
в блоке respond_to
.
В методе show
, например
def show
# code beforehand
respond_to do |format|
format.html { render :layout => !request.xhr? }
# other formats
end
end
И это! Предотвращение макетов во время запросов AJAX!
Примечание.. Благодаря smaty-комментарию к его ответу это было еще более упрощено. Первоначально у меня было format.html { render :layout => nil if request.xhr? }
Это решение работает так же хорошо, но модификация smathy делает его еще проще.
Вам не нужно добавлять этот параметр, request.xhr?
вернет true в вашем контроллере, когда будет Ajax-запрос. Просто используйте это, чтобы решить, нужно ли отображать макет или нет.