我的一个模型对象有一个“文本”列,其中包含网页的完整HTML。
我想编写一个控制器动作,该动作只是直接从控制器返回此HTML,而不是像在控制器上其余动作一样通过.erb模板传递它。
我的第一个想法是将该操作放入新的控制器中,并在模板中创建一个具有空布局的自定义.erb<%= modelObject.htmlContent %>模板-但我想知道在Rails中是否有更好的方法可以做到这一点。
Answers:
在控制器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
respond_to块吗?render :text => '<h1>text</h1>'在Rails 4中对我来说工作正常。我respond_to只是要处理多个Accept-Type。
render text: …。如果要呈现HTML,请使用render html: …,以供文本使用render plain: …。