Ma situation: L'action d'affichage de ReportsController doit restituer du code HTML pur, mais pas sous forme de fichier (pour l'afficher dans le navigateur et l'enregistrer après). Donc, pour le rendu, j'utilise le modèle de vue view.html.erb et i neet pour désactiver les présentations pour cette action. Mais dans les autres actions de ce contrôleur, les présentations ne doivent pas être modifiées . Ne fonctionne que pour le contrôleur entier, comme ceci:
ReportsController < ApplicationController
layout false
Mais que le faire mal :( pour toutes les actions J'ai essayé d'utiliser quelque chose comme ceci en action:
def view
@report = Report.new(params[:report])
unless @report.valid?
render :action => 'new' and return
else
render :layout => false
end
end
Que devrais-je faire?
Essaye ça:
ReportsController < ApplicationController
layout false
layout 'application', :except => :view
Dans le bloc de réponse, ajoutez layout: false
.
Par exemple:
respond_to do |format|
format.html { render :layout => false } # your-action.html.erb
end
Si vous souhaitez obtenir un modèle non standard, sans mise en page, vous pouvez utiliser:
def non_rest
render template: 'layouts/something_new', layout: false
end