如何直接从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