Как вернуть HTML непосредственно из контроллера Rails?

Один из моих объектов модели имеет столбец "текст", который содержит полный HTML-адрес веб-страницы.

Я хотел бы написать действие контроллера, которое просто возвращает этот HTML непосредственно из контроллера, а не передает его через шаблоны .erb, как и остальные действия на контроллере.

Моя первая мысль заключалась в том, чтобы вывести это действие в новый контроллер и создать собственный шаблон .erb с пустым макетом и всего лишь <%= modelObject.htmlContent %> в шаблоне, но я подумал, есть ли лучший способ сделать это в Rails,

Ответ 1

В блоке управления 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

Ответ 2

В последнем Rails (4.1.x), по крайней мере, это намного проще, чем принятый ответ:

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

Ответ 3

Его работы для меня

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

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