69 votes

Comment retourner du HTML directement à partir d'un contrôleur Rails?

L'un de mes objets de modèle a un "texte" de la colonne qui contient le HTML d'une page web.

Je voudrais écrire une action de contrôleur qui renvoie simplement ce code HTML directement dans le contrôleur, plutôt que de passer par la .erb modèles comme le reste des actions sur le contrôleur.

Ma première pensée a été de tirer de cette action dans un nouveau contrôleur et de faire un personnalisé .erb modèle avec un layout vide, et seulement <%= modelObject.htmlContent %> dans le modèle, mais je me demandais si il y avait une meilleure façon de le faire dans les Rails.

92voto

Dan McNevin Points 15319

Dans votre bloc respond_to votre contrôleur, vous pouvez utiliser:

 render :text => @model_object.html_content
 

ou:

 render :inline => "<%= @model_object.html_content %>"
 

Donc, quelque chose comme:

 def show
  @model_object = ModelObject.find(params[:id])

  respond_to do |format|
    format.html { render :text => @model_object.html_content }
  end
end
 

3voto

Selva Points 1539

Ça marche pour moi

 def show
  @model_object = ModelObject.find(params[:id])

   respond_to do |format|
    format.html { render :inline => "<%== @model_object['html'] %>" }
  end
end
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X