Ruby on rails 如何直接从Rails控制器返回HTML?
我的一个模型对象有一个“文本”列,其中包含网页的完整HTML 我想编写一个控制器操作,直接从控制器返回这个HTML,而不是像控制器上的其他操作一样通过.erb模板传递Ruby on rails 如何直接从Rails控制器返回HTML?,ruby-on-rails,Ruby On Rails,我的一个模型对象有一个“文本”列,其中包含网页的完整HTML 我想编写一个控制器操作,直接从控制器返回这个HTML,而不是像控制器上的其他操作一样通过.erb模板传递 我的第一个想法是将此操作拉到一个新的控制器中,并创建一个带有空布局的自定义.erb模板,只在模板中添加——但我想知道是否有更好的方法在Rails中实现这一点 在控制器的respond_to块中,您可以使用: render :text => @model_object.html_content 或: 它对我有用 def sh
我的第一个想法是将此操作拉到一个新的控制器中,并创建一个带有空布局的自定义.erb模板,只在模板中添加
——但我想知道是否有更好的方法在Rails中实现这一点 在控制器的respond_to
块中,您可以使用:
render :text => @model_object.html_content
或:
它对我有用
def show
@model_object = ModelObject.find(params[:id])
respond_to do |format|
format.html { render :inline => "<%== @model_object['html'] %>" }
end
end
def显示
@model\u object=ModelObject.find(参数[:id])
回应待办事项|格式|
format.html{render:inline=>“”
结束
结束
至少在最新的Rails(4.1.x)中,这比公认的答案要简单得多:
def show
render html: '<div>html goes here</div>'.html_safe
end
def显示
呈现html:“html在此显示”。html\u安全
结束
(稀疏)文档位于,以防其他人查找它!:)是否确实需要使用respond\u to
块<代码>渲染:text=>“text”在Rails 4中对我来说很好。我认为respond\u to
只是为了处理多个接受类型。Rails 5在使用render text:…
时会产生一个弃用警告。如果要呈现HTML,请使用呈现HTML:…
,对于文本,请使用呈现纯文本:…
。
def show
@model_object = ModelObject.find(params[:id])
respond_to do |format|
format.html { render :inline => "<%== @model_object['html'] %>" }
end
end
def show
render html: '<div>html goes here</div>'.html_safe
end