首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DoubleRenderError后Net::HTTP.post_form

DoubleRenderError后Net::HTTP.post_form
EN

Stack Overflow用户
提问于 2014-02-24 13:48:58
回答 1查看 120关注 0票数 1

嗨,我想发布xml数据到服务器,并根据响应重定向页面。为此,在我的控制器,我有我的动作和send_xml方法。

Ruby版本:2.0.0-p 247

Rails版本: 3.2.17

代码语言:javascript
复制
def new
  @sales = current_user.sales.new
  respond_with(@sales)
end

def fail
  flash[:error] = 'Canceled'
  render :new
end

def success
  result = send_xml(params)
  if result['Response'] == 'Approved'
    flash[:success] = 'Approved'
    redirect_to(approved_path)
    return
  else
    flash[:error] = 'Failed'
    redirect_to(failed_path)
    return
  end
end
private
def send_xml(params)
  request = "DATA=<?xml version=\"1.0\" encoding=\"ISO-8859-9\"?><myData>Foo</myData>"
  uri = URI.parse('http://foobar.com')
  xml = render xml: request
  response = Net::HTTP.post_form(uri, xml)
  response = Hash.from_xml(response.body)
  response['myResponse']
end

当我试图运行此操作时,会出现以下错误:

代码语言:javascript
复制
AbstractController::DoubleRenderError 
Render and/or redirect were called multiple times in this action. Please note that you 
may only call render OR redirect, and at most once per action. Also note that neither     
redirect nor render terminate execution of the action, so if you want to exit an action
after redirecting, you need to do something like "redirect_to(...) and return". 

我猜NET::HTTP.post_form方法会触发呈现或重定向,从而导致此错误。

我怎样才能摆脱这个错误。

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-24 13:52:07

这是因为您正在从render xml: request调用#send_xml中调用renderredirect,因此调用了renderredirect,这将导致异常(正如消息所指出的那样)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21989677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档