在我的Rails应用程序中,有一个动作使用XML Builder模板(rxml)模板和render_to_string创建XML文档。XML文档被转发到后端服务器。创建XML文档后,我想向浏览器发送正常的HTML响应,但是不知何故Rails记住了对render_to_string的第一次调用。例如:
编辑:似乎在Rails 2中,erase_render_results可以解决问题,但在Rails 3中不再可用。
- Rails找不到默认视图show.html.erb,因为它寻找show.rxml。
- 在我的操作处理程序底部简单地放置render 'mycontroller/show.html.erb'可以使Rails找到模板,但是浏览器无法工作,因为响应标头的内容类型是text/xml。
编辑:似乎在Rails 2中,erase_render_results可以解决问题,但在Rails 3中不再可用。
erase_render_results
只是将标志设置为 false 并擦除 response_body - 在 render_to_string 的源代码中,内容类型明确设置为 nil。这似乎更有可能是您遇到的问题的原因。 - Brett Bender