Подтвердить что ты не робот

Rails предотвращает компоновку во время запроса 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 делает его еще проще.

4b9b3361

Ответ 1

Вам не нужно добавлять этот параметр, request.xhr? вернет true в вашем контроллере, когда будет Ajax-запрос. Просто используйте это, чтобы решить, нужно ли отображать макет или нет.