ruby-on-rails – 如何在使用render_to_string后正常渲染视图?
在我的Rails应用程序中,我有一个使用
XML Builder模板(rxml)模板和render_to_string创建XML文档的操作. XML文档被转发到后端服务器.
创建XML文档后,我想向浏览器发送一个普通的HTML响应,但不知何故Rails记住第一次调用render_to_string. 例如: > Rails找不到默认视图show.html.erb,因为它查找show.rxml. 有没有办法使用render_to_string而不“污染”实际的浏览器响应? 编辑:似乎在Rails 2中,erase_render_results可以解决问题,但在Rails 3中它已不再可用. 解决方法
实用的答案是使用视图文件和两个渲染调用是Not The Rails方式:视图通常是发送到客户端的东西,ActionPack被设计为以这种方式工作.
也就是说,有一种简单的方法可以实现您的目标.您可以直接使用Builder :: XmlMarkup将XML生成为字符串,而不是使用ActionView: def action_in_controller buffer = "" xml = Builder::XmlMarkup.new(buffer) # build your XML - essentially copy your view.xml.builder file here xml.element("value") xml.element("value") # send the contents of buffer to your 3rd server # allow your controller to render your view normally end 看看the Builder documentation看看它是如何工作的. 您可以利用的Builder的另一个功能是使用<<来将XML内容附加到缓冲区,因此可以使用任何IO流.根据您将内容发送到其他服务器的方式,您可以很好地完成所有内容. 当然,这可能会变得非常混乱和冗长,这就是为什么你想要将这些功能封装在另一个类中,或者作为模型中的方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |