Anders
Anders

Reputation: 2941

Routing error Rails 3.2.1

I'm trying to create a very simple site the sends and receives parameters from the URL (or link), the app should support any number of parameters, i.e. http://localhost:3000/action=receive&controller=pages&email=mail%40site.com&name=Vinny, and then be able to receive/print them.

I think I have located the problem to my route. It currently looks like this:

match 'pages/*params' => 'pages#receive'

I create the link that sends the params like this:

<%= link_to "Send Params", :action => "receive", :name => "Vinny", :email => "[email protected]" %>

When I click the link I get the following error.

No route matches [GET] "/assets"

And the URL looks like this:

http://localhost:3000/assets?action=receive&controller=pages&email=mail%40site.com&name=Vinny

Note asset?.

If my route instead looks like this:

match 'pages/:name/:email' => 'pages#receive'

It works, but then I'm limited to the specified params.

Any tips on how to solve this would be great.

Upvotes: 0

Views: 742

Answers (1)

BryanH
BryanH

Reputation: 6062

Okay, I think I see what is happening. Specifying parameters in the routes is not necessary to get the values into the controller's action. So, replace the map you specified earlier in the routes.rb with

resources :pages

If you add to your link

:controller => "pages"

It should go to the correct controller + action. (this may not be necessary in your case)

In that action, you can grab all of the params from the hash

email = params[:email]
account = params[:name]

Etc.

Upvotes: 2

Related Questions