Mi situación: Ver la acción de ReportsController debería representar html puro, pero no como un archivo (para verlo en el navegador y guardarlo después). Entonces, para renderizar, uso la plantilla de vista view.html.erb y necesito desactivar cualquier diseño para esta acción. Pero en otras acciones de este controlador, los diseños deben permanecer intactos. Funciona solo apagándose para todo el controlador como este:
ReportsController < ApplicationController
layout false
Pero hacerlo mal :( para todas las acciones, intenté usar algo como esto en acción:
def view
@report = Report.new(params[:report])
unless @report.valid?
render :action => 'new' and return
else
render :layout => false
end
end
¿Qué tengo que hacer?
ruby-on-rails
layout
Antiarquitecto
fuente
fuente
Respuestas:
Prueba esto:
ReportsController < ApplicationController layout false layout 'application', :except => :view
fuente
:only
no funciona correctamentelayout nil
. Sin embargo, pude hacer que funcionara anulando el diseño y volviéndolo a agregar con la excepción. Actualicé mi respuesta.false
¡funciona! ¡Gracias por eso!layout false, only: :view
parece una forma más concisa de lograr el mismo objetivo sin los efectos secundarios que menciona Antiarchitect.Esto debería hacerlo
def view ... render :layout => false end
Enlace a la documentación
fuente
layout: false
para cada formato en la acción.En el bloque responder, agregue
layout: false
.Por ejemplo:
respond_to do |format| format.html { render :layout => false } # your-action.html.erb end
fuente
Si desea obtener una plantilla no estándar, sin diseño, puede usar:
def non_rest render template: 'layouts/something_new', layout: false end
fuente