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: <http://www.w3.org/TR/html401/interact/forms.html#radio>

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

<http://www.w3.org/TR/html401/types.html#type-name>

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: