Ich versuche herauszufinden, wie das Layout von einem benutzerdefinierten Responder festgelegt wird. Ich möchte die request.xhr verwenden? um das Layout für das Rendern auf 'Ajax' zu setzen. Weiß jemand, wie man das macht? Ich bin mit Rails 3 und ich habe ein Responder wie folgt aus:Layout von Responder setzen?
module AjaxLayoutResponder
def to_html
if request.xhr?
# do something here to change layout...
end
super
end
end
Es scheint mir wie ein Responder der beste Weg ist, diese ‚Ajax‘ Layout Umschaltung zu erreichen.
, die in der Regel ist das, was ich tue, aber diese spezielle Das Projekt verwendet Layouts, die für verschiedene Controller angepasst sind. Dies würde mein Layout immer "Anwendung" anstelle der angepassten machen. Es scheint mir, dass das Ändern des Layouts basierend darauf, ob die Anfrage ein Ajax ist, tatsächlich zu der Beschreibung eines Responders passt. Warum sollte sich der Controller darum kümmern? Der Antwortgeber passt die Antwort basierend auf dem Anforderungstyp an. Und dies würde die Wiederverwendung von Trockencode fördern. Anstatt für jeden Controller, der ein nicht standardmäßiges Layout hat, ein benutzerdefiniertes 'set_layout' zu erstellen. – demersus
Ah, ich verstehe. Haben Sie Ihre Layouts nach Ihrem Controller benannt? Wenn ja, könnte so etwas funktionieren: request.xhr? 'ajax': params [: Controller] .singularize –
Das scheint logisch. Ich werde es versuchen müssen. Vielen Dank :) – demersus