Program Tip

Rails 컨트롤러에서 직접 HTML을 반환하는 방법은 무엇입니까?

programtip 2020. 11. 10. 22:11
반응형

Rails 컨트롤러에서 직접 HTML을 반환하는 방법은 무엇입니까?


내 모델 개체 중 하나에는 웹 페이지의 전체 HTML을 포함하는 '텍스트'열이 있습니다.

컨트롤러의 나머지 작업처럼 .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

최신 Rails (4.1.x)에서는 적어도 허용되는 답변보다 훨씬 간단합니다.

def show
  render html: '<div>html goes here</div>'.html_safe
end

나를위한 작품

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

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

참고 URL : https://stackoverflow.com/questions/1958759/how-to-return-html-directly-from-a-rails-controller

반응형