redirect_to(URL) and return

119 views
Skip to first unread message

Smit Shah

unread,
Feb 10, 2010, 12:59:56 AM2/10/10
to rubyonra...@googlegroups.com
Hi..

I am using an API. In that, I have to send data in query string. Now my
question is how to get back from that site??? because it is not taking
return_url from myside. It gives me response. I want to again redirect
to some action according to the returned value. It is not allowing me to
redirecting multiple times in the same def.

I have written following code.

<% @url = "www.abc.com/api?name=data" %>
<% response = redirect_to(@url) %>
<% if response == "true" %>
<% redirect_to :action => 'success' %>
<% else %>
<% redirect_to :action => 'failure' %>
<% end %>

This code gives me error like "multiple redirection". How to solve
this???

Thanks....
--
Posted via http://www.ruby-forum.com/.

Frederick Cheung

unread,
Feb 10, 2010, 3:11:41 AM2/10/10
to Ruby on Rails: Talk

On Feb 10, 5:59 am, Smit Shah <li...@ruby-forum.com> wrote:
> Hi..
>
> I am using an API. In that, I have to send data in query string. Now my
> question is how to get back from that site??? because it is not taking
> return_url from myside. It gives me response. I want to again redirect
> to some action according to the returned value. It is not allowing me to
> redirecting multiple times in the same def.
>
> I have written following code.
>
> <% @url = "www.abc.com/api?name=data" %>
> <% response = redirect_to(@url) %>
> <% if response == "true" %>
>   <% redirect_to :action => 'success' %>
> <% else %>
>   <% redirect_to :action => 'failure' %>
> <% end %>
>

First off, this code should not be in a view. Secondly redirect_to
just doesn't work like that. redirect_to sends a response back to the
browser that tells it to go to the specified url - you'll never see
the response from that server or indeed the request. If you want to
get data out of some 3rd party api then you need to use something like
net/http to make an http request.

Fred

Smit Shah

unread,
Feb 10, 2010, 5:39:50 AM2/10/10
to rubyonra...@googlegroups.com

Thanks Fred....

Can you please post the sample code for the same? Or will you please
provide links than can help me out?

Sharagoz --

unread,
Feb 10, 2010, 8:46:44 AM2/10/10
to rubyonra...@googlegroups.com
You need to send a http request in the controller action and use that
info to redirect the user.


require 'net/http'

connection = Net::HTTP.new("www.google.com")
response = ""
connection.start do |http|
req =
Net::HTTP::Get.new("/#hl=en&source=hp&q=ruby+on+rails&aq=f&aqi=g10&oq=&fp=c26c79a56c95bda8")
response = http.request(req)
end

if(response == "true")
redirect_to(:action => 'success')
else
redirct_to(:action => 'failure)
end

Reply all
Reply to author
Forward
0 new messages