Forum: Ruby on Rails URIs are transformed from view to controller

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Damaris F. (Guest)
on 2008-10-08 20:33
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.
Robert W. (Guest)
on 2008-10-08 20:39
> <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:
>
> <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.
Damaris F. (Guest)
on 2008-10-08 20:46
Um.... :(

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 :(

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:
>>
>> <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.
Damaris F. (Guest)
on 2008-10-08 20:46
When I say "they like" i am referring to the users.
Hassan S. (Guest)
on 2008-10-09 01:56
(Received via mailing list)
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 :(

Uh, that would be the 'value' attribute. :-)

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
Damaris F. (Guest)
on 2008-10-09 14:32
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 :(
>
> Uh, that would be the 'value' attribute. :-)
>
> 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
This topic is locked and can not be replied to.