1. ホーム
  2. ruby-on-rails

Railsのコントローラから直接HTMLを返すには?

2023-11-11 17:41:55

質問

私のモデルオブジェクトの1つは、Webページの完全なHTMLを含む'text'カラムを持っています。

コントローラ上の他のアクションのように.erbテンプレートを介して渡すのではなく、単純にコントローラから直接このHTMLを返すコントローラアクションを書きたいと思います。

最初に考えたのは、このアクションを新しいコントローラに引き込み、空のレイアウトのカスタム.erbテンプレートを作成し、単に <%= modelObject.htmlContent %> をテンプレートに入れることでした。しかし、Railsでこれを行うより良い方法があるのではないかと思いました。

どのように解決するのですか?

コントローラで respond_to ブロックを使用することができます。

render :text => @model_object.html_content

または

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

のような感じか。

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

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