Can i use a hash on a collection_select? If don't, alternatives

In my current application, i have food categories: mexican, home made,
japanese, ect
As these categories only have ID and name, no other attributes, i dont
want to create a table on the DB.
My first idea was to create a constant named FOOD_CATEGORIES, that is
has like:
FOOD_CATEGORIES = { 1=>‘mexican’,
2=>‘japanese’, … }
BUT, since the hash doesn’t have :id method, i dont know how to use
this constant on a collection_select in my views.

Do you have a better idea?

Thanks

On 17 June 2010 12:17, Miguel.camba [email protected] wrote:

Do you have a better idea?

Maybe options_for_select is what you are looking for.

Colin

I dont think so. I want to show a select that shows que values of the
hash but the stored data when you submit a form is the key of that
value un the hash.

I have just found a solution, but using a helper
In application_helper i wrote this function:
def select_from_hash(object, name, arg)
select = “<select id=”#{object}_#{name}" name="#{object}
[#{name}]""
arg.each do |i,e|
select += “<option value=”#{i}">#{e}"
end
select += “”
end
And in my views I use it this way (im using Haml):
.field= render :inline=> select_from_hash(:profile, :loved_food,
CATEGORIES)

Works fine but im all ears for other-more-elegant approach.