Установить макет от респондента?
Я пытаюсь выяснить, как установить макет из пользовательского респондента. Я хочу использовать request.xhr? установить макет для рендеринга в "ajax". Кто-нибудь знает, как это сделать? Я использую Rails 3 и у меня есть такой ответчик:
module AjaxLayoutResponder
def to_html
if request.xhr?
# do something here to change layout...
end
super
end
end
Мне кажется, что респондент - лучший способ выполнить переключение раскладки "ajax".
2 ответа
Решение
Я не согласен с тем, что ответчик - это путь. Вот простое решение, которое я использую в большинстве своих проектов (однако я просто установил макет ajax на ноль):
В application_controller.rb
layout :set_layout
def set_layout
request.xhr? 'ajax' : 'application'
end
Вы могли бы просто сделать это:
module AjaxLayoutResponder
def to_html
if request.xhr?
options[:layout] = 'ajax'
end
super
end
end
потому что в конце выполнения респондента вызывается:
# from https://github.com/plataformatec/responders/blob/master/lib/action_controller/responder.rb
def default_render
if @default_response
@default_response.call(options)
else
controller.render(options)
end
end