Collection_select is quoting my text_method text?

I have a table that contains currencies I support which has the
columns:
id,
ch (the character to display when showing currency)
name (the human name of the currency …)

This table is currently loaded with these values:

currencies:

Name ch


U.S.D $
Euro &euro
G.B.P. &pound

I created a method in my ‘currency’ model called ‘menustr’ which I use
in collection_select to show the currency options:

def menustr
return ch + " " + name
end

I then use this in my form template:

<td><label for="customer_def_cur_pref">Default Currency:


<%= collection_select(“customer”, :def_cur_pref, @zcurtype,
:ch, :menustr) %>

where @zcurtype is an array containing all the currencies in the
currencies table.

Instead of putting the pretty html version of &pound and &euro in my
pull down menu, collection_select’s form is quoting them and I still
see the “&pound” and “&euro” text.

Anyone have a way to work around this?

Thanks!

dmack wrote:

Name ch
end

Instead of putting the pretty html version of &pound and &euro in my
pull down menu, collection_select’s form is quoting them and I still
see the “&pound” and “&euro” text.

Append a semicolon to the values in your table that are HTML symbols.


We develop, watch us RoR, in numbers too big to ignore.

Mark Reginald J. wrote:

return ch + " " + name

currencies table.

Instead of putting the pretty html version of &pound and &euro in my
pull down menu, collection_select’s form is quoting them and I still
see the “&pound” and “&euro” text.

Append a semicolon to the values in your table that are HTML symbols.

Thanks for the response. I have the semi-colon on the end of my values
for ‘ch’ in my currencies table. If I list my table using the default
scaffolding, I get what I want:

Listing currencies (sorry for the formatting)
Name Ch Menustr Actions
USD $ $; USD Show Edit Destroy
Euro ? ?; Euro Show Edit Destroy
GBP £ £; GBP Show Edit Destroy

However, when I populate a pull-down menu using collection_select, the
symbol reverts back to either &pound or &euro which doesn’t look as
pretty :frowning:

My controller does this:

def new
@customer = Customer.new
@zcurtype= Currency.find(:all)
end

and the chunk in the form template does this for the pull-down:

Default Currency:
<%= collection_select(“customer”, :def_cur_pref, @zcurtype, :ch,
:menustr) %>

… Looking at the generated html, you can see the &amp … prefixes
on the code plus the extra semi-colon I added to see if it would help
:slight_smile:

Default Currency:

$; USD
&euro;; Euro
&pound;; GBP

dmack wrote:

However, when I populate a pull-down menu using collection_select, the
symbol reverts back to either &pound or &euro which doesn’t look as
pretty :frowning:

Yes, the Rails select options builder is calling html_escape on the
option texts and values.

You’ll either have to build your html options manually, or override
the html_escape method.


We develop, watch us RoR, in numbers too big to ignore.

Mark Reginald J. wrote:

Yes, the Rails select options builder is calling html_escape on the
option texts and values.

You’ll either have to build your html options manually, or override
the html_escape method.

Aha… So collection_select escapes html. That explains it. I will
use your suggestion and build up the option lists manually.

Too bad we can’t pass an :escape => false or something to
collection_select.

Thank you!

Dan

dmack wrote:

Aha… So collection_select escapes html. That explains it. I will
use your suggestion and build up the option lists manually.

Too bad we can’t pass an :escape => false or something to
collection_select.

Good idea. While the value tag of the option must be escaped
(see http://dev.rubyonrails.org/ticket/2011), the option text
is html, and that need not be escaped. I’ll submit a patch.


We develop, watch us RoR, in numbers too big to ignore.

Mark Reginald J. wrote:

Yes, the Rails select options builder is calling html_escape on the
option texts and values.

You’ll either have to build your html options manually, or override
the html_escape method.

Mark,

You are correct. I didn’t know that it did that until now but now I
do. It’s too bad we can’t pass an :escape => false or something to
collection_select.

Thank you for you help,

Dan

dmack wrote:

This table is currently loaded with these values:

currencies:

Name ch


U.S.D $
Euro &euro
G.B.P. &pound

Instead of putting the pretty html version of &pound and &euro in my
pull down menu, collection_select’s form is quoting them and I still
see the “&pound” and “&euro” text.

Anyone have a way to work around this?

Thanks!

here, you dropped this: ‘;’

try € and £

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs