Forum: Ruby on Rails Issues with rails resourceful routes

Posted by Dan Brooking (Guest)
on 2012-11-22 14:00
(Received via mailing list)
I'm not sure where my issue is - if it's in my routes file (maybe I need 
to be more specific) or if it's the format of the URL.

I am working on a screen scraping project just for fun.  It is designed 
where the URL of the page you are on is passed into the Rails app, so if 
you are on
  http://guides.rubyonrails.org/routing.html
and click the button for my app, it routes to
  http://localhost:3000/pages/http%3A%2F%2Fguides.ru...

My routes file has this:

  resources :pages

The problem I face is it works for part of the URL.  So if I do:

  http://localhost:3000/pages/http%3A%2F%2F or
  http://localhost:3000/pages/http%3A%2F%2Fguides or
  http://localhost:3000/pages/http%3A%2F%2Fguides.rubyonrails

it works.  But as soon as I add in the second '.', I start getting 
errors.

  http://localhost:3000/pages/http%3A%2F%2Fguides.ru...

gives me:

  Routing Error
  No route matches [GET] "/pages/http%3A%2F%2Fguides.rubyonrails.org"

Any ideas?
Posted by tamouse mailing lists (Guest)
on 2012-11-22 14:22
(Received via mailing list)
Maybe I'm just not getting this, but why wouldn't you pass the URL as
a query string?
Posted by Dan Brooking (Guest)
on 2012-11-22 14:26
(Received via mailing list)
Fairly new to rails so that is a good question :)

How would I do that?

/pages?url=http://..

/pages/url=http://..

Would I need to change the routes any?
Posted by Jordon Bedwell (Guest)
on 2012-11-22 14:27
(Received via mailing list)
On Thu, Nov 22, 2012 at 6:58 AM, Dan Brooking <dmbrooking@gmail.com> 
wrote:
__SNIP__

> The problem I face is it works for part of the URL.  So if I do:
>         http://localhost:3000/pages/http%3A%2F%2F or
>         http://localhost:3000/pages/http%3A%2F%2Fguides or
>         http://localhost:3000/pages/http%3A%2F%2Fguides.rubyonrails
> it works.  But as soon as I add in the second '.', I start getting errors.
>         http://localhost:3000/pages/http%3A%2F%2Fguides.ru...
> gives me:
>         Routing Error
>         No route matches [GET] "/pages/http%3A%2F%2Fguides.rubyonrails.org"
> Any ideas?

get "/pages/:page" => "controller#page", value: /.*/
Notice the "value: /.*/".
Posted by tamouse mailing lists (Guest)
on 2012-11-22 14:35
(Received via mailing list)
Jordan's answer notwithstanding,

On Thu, Nov 22, 2012 at 7:25 AM, Dan Brooking <dmbrooking@gmail.com> 
wrote:
> Fairly new to rails so that is a good question :)
>
> How would I do that?
>
> /pages?url=http://..

This is the format that will give you a query string.

> /pages/url=http://..

This form would need to be handled in routes in a manner similar to
the answer Jordan gave.
Posted by Dan Brooking (Guest)
on 2012-11-22 18:41
(Received via mailing list)
On Nov 22, 2012, at 8:33 AM, tamouse mailing lists 
<tamouse.lists@gmail.com> wrote:

> Jordan's answer notwithstanding,
>

I tried that and it didn't work.  I understand what it's trying to do so 
I'll keep playing with it to get it working.  I did use the url param 
method you have below and that is working.

On a side note - is either one considered to be a better way to do it? 
Or just two different ways of solving the same problem?  Is there a 
length limit to URL params that I might run into?
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.