views:

663

answers:

1

I'm using

link_to 'My link', path(:arg1 => session[:arg1], :arg2 => session[:arg2],:arg3 => anyobject.id), :method => :post

but the html link being generate includes (arg1,arg2,arg3) as url query parameters.

How can remove them? Did I miss something in the docs?

Thanks

+2  A: 

A link_to will always put the arguments into the query string as it is creating a get-style html link - even if you put :method => :post that just appends an extra ("special") argument "_method".

What I think you really want is a button_to link - which will make it into a sort of form-post. It works the same but says "button_to" instead. The downside is that it will look like a button. But you can give it a css class (eg "unbutton") then change the styling on that css class to make it not look like a button.

Alternatively - if what you really want is actually to have no parameters passed at all... then just don't include them when making your link (eg link_to "My link" path - there's no need for :post if you don't want to post any params).

Finally - if what you want is for the params to become a part of the URL (eg stuff/[param_1]/more_stuff/[param_2] etc) then you need to update your routes to include the parameters as options. Have a look at the routing section of the rdoc (link below) for how to do that: http://api.rubyonrails.org/classes/ActionController/Routing.html

Taryn East