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

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

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

我的第一个想法是把这个动作拉到一个新的控制器,并使用一个空的布局,并在模板中的<%= modelObject.htmlContent %>自定义.erb模板 – 但我想知道是否有更好的方法来做到这一点在Rails中。

在你的controller的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)中,至less比接受的答案简单得多:

 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