Как вернуть 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