我的一个模型对象有一个“文本”列,其中包含网页的完整HTML。
我想编写一个控制器动作,它只是直接从控制器返回这个HTML,而不是像控制器上的其他动作一样通过.erb模板。
我的第一个想法是将此操作拉入新控制器并使用空布局创建自定义.erb模板,并在模板中只显示<%= modelObject.htmlContent %>
- 但我想知道是否有更好的方法来执行此操作在Rails中。
答案 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