URIs are transformed from view to controller

Hi you all

I have a form with button tags that represent a uri, so, for example, I have:

<input checked='checked' id='#{url}' name='#{url}' type='radio' value='#{value}' />

Where "url" is a variable containing a URI. The URI appears on the view correctly so, in case of a URI such as http://hello.com/bla+bla, it appears as it is. However, when returning "params" to the controller, the "params" variable has stored the URI as "http://hello.com/bla bla". That is, it has transformed the "+" symbols to spaces. How can I avoid this? I have tried with URI::unescape(url) in the form, but it still transforms the URI.

<input checked='checked' id='#{url}' name='#{url}' type='radio'

URIs as id and name attributes! Wow that seems bizarre. I'm not surprised at all that you're seeing some odd behavior.

I'm guessing that it's to_param method that is doing that to you, but I imagine it's doing so to try to protect you from yourself.

Damaris Fuentes wrote:

Um.... :frowning:

I have results in a list. These results are web pages, each of them have some radio buttons to say if they like or not that web page. So, the radio buttons have to store those URLs somewhere :frowning:

Robert Walker wrote:

When I say "they like" i am referring to the users.

Uh, that would be the 'value' attribute. :slight_smile:

I'd suggest re-reading the relevant HTML recommendation. For one thing, all radio buttons of a set must share the same name.

See: <Forms in HTML documents;

Also, slashes aren't legal characters for an id or name:

<Basic HTML data types;

FWIW,

Um... the value attribute is "Yes", "No", "I don't care" :), related to the web page on the name of radio button.

I will have a look to the links you mention. However, I am not sure I will be able to change this, so I think I will end up encoding the url some way and decoding it in the controller..

Lots of thanks for your help.

Hassan Schroeder wrote: