vri*_*h88 12 redirect ruby-on-rails http-request
在我的一个控制器操作结束时,我需要重定向到只接受put请求的页面.我一直试图弄清楚如何让redirect_to使用put请求但没有成功.
这可能吗?或者还有另一种方法来实现这一目标吗?
好的,所以我找到了解决我的问题的方法。我发现一篇关于这里情况的很好的文章。我的实现如下所示:
private
def redirect_post(redirect_post_params)
controller_name = redirect_post_params[:controller]
controller = "#{controller_name.camelize}Controller".constantize
# Throw out existing params and merge the stored ones
request.parameters.reject! { true }
request.parameters.merge!(redirect_post_params)
controller.process(request, response)
if response.redirected_to
@performed_redirect = true
else
@performed_render = true
end
end
Run Code Online (Sandbox Code Playgroud)
然后我这样调用这个方法:
redirect_post :controller => 'registrations', :action => 'order', :_method => 'put', :authenticity_token => params[:authenticity_token]
Run Code Online (Sandbox Code Playgroud)
因此,我能够通过发出发布请求(使用redirect_post)然后将“放置”分配给_method参数来“伪造”放置请求。如果你看一下正常的put请求,它都是post来自带有参数的表单_method。所以它有点黑客,但它完成了工作。
另外,您必须确保当您调用redirect_post哈希值时,哈希值是字符串,否则将引发错误。