我的一个模型对象有一个“文本”列,其中包含网页的完整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: …
。