如何直接从Rails控制器返回HTML?

时间:2009-12-24 15:43:48

标签: ruby-on-rails

我的一个模型对象有一个“文本”列,其中包含网页的完整HTML。

我想编写一个控制器动作,它只是直接从控制器返回这个HTML,而不是像控制器上的其他动作一样通过.erb模板。

我的第一个想法是将此操作拉入新控制器并使用空布局创建自定义.erb模板,并在模板中只显示<%= modelObject.htmlContent %> - 但我想知道是否有更好的方法来执行此操作在Rails中。

3 个答案:

答案 0 :(得分:91)

在您的控制器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

答案 1 :(得分:53)

在最新的Rails(4.1.x)中,至少,这比接受的答案简单得多:

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

答案 2 :(得分:3)

它适用于我

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

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