URIs are transformed from view to controller


#1

Hi you all

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

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.


#2

<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 F. wrote:

Hi you all

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

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.


#3

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 W. wrote:

<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 F. wrote:

Hi you all

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

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.


#4

On Wed, Oct 8, 2008 at 9:46 AM, Damaris F.
removed_email_address@domain.invalid wrote:

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:

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,

Hassan S. ------------------------ removed_email_address@domain.invalid


#5

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 S. wrote:

On Wed, Oct 8, 2008 at 9:46 AM, Damaris F.
removed_email_address@domain.invalid wrote:

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:

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,

Hassan S. ------------------------ removed_email_address@domain.invalid


#6

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