私の状況:ReportsControllerの表示アクションは、ファイルとしてではなく、純粋なhtmlをレンダリングする必要があります(ブラウザーで表示し、後で保存するため)。したがって、レンダリングにはビューテンプレートview.html.erbを使用し、このアクションのレイアウトをオフにします。ただし、このコントローラーの他のアクションでは、レイアウトはそのままにしておく必要があります。このようにコントローラー全体でのみオフになります:
ReportsController < ApplicationController
layout false
しかし、それは間違っています:(すべてのアクションについて、私はこのようなものをアクションで使用しようとしました:
def view
@report = Report.new(params[:report])
unless @report.valid?
render :action => 'new' and return
else
render :layout => false
end
end
私は何をすべきか?
これを試して:
ReportsController < ApplicationController
layout false
layout 'application', :except => :view
応答ブロックで、layout: false
を追加します。
例えば:
respond_to do |format|
format.html { render :layout => false } # your-action.html.erb
end
非標準のテンプレートを取得したい場合、レイアウトは使用できません:
def non_rest
render template: 'layouts/something_new', layout: false
end