Programing

작업 중 하나에 대한 레이아웃 끄기

lottogame 2020. 10. 16. 07:03
반응형

작업 중 하나에 대한 레이아웃 끄기


내 상황 : 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

이렇게해야합니다.

def view
    ...
    render :layout => false
end

문서 링크


응답 블록에서 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

참고 URL : https://stackoverflow.com/questions/2062312/turn-off-layout-for-one-of-action

반응형