iterator question

I am trying to create a form dropdown select field and I would like to use an array to build it.

My code is: <select name="order[ship_to_state]" id="order_ship_to_state">     <% states = ["Alabama", "Alaska", "Alberta", "Arizona", "Arkansas" ]

    states.each do | state | %>      <option value="<% "#{state}" %>"> <% "#{state}" %></option>     <% end %>     </select>

But I get an empty dropdown.

What should I change to make this happen?

Thanks, Elle

Try:

states = ['Alabama', 'Alaska', 'Denial'].freeze collection_select(:order, :ship_to_state, states.map{|s| [s,
s]}, :first, :first)

It's air-code (untried, untested), but might get you on the right track.

Not working. Other solution?

Elle

    states.each do | state | %>      <option value="<% "#{state}" %>"> <% "#{state}" %></option>     <% end %>     </select>

But I get an empty dropdown.

Hi Elle,

You seem to be using the ruby tags that don't output their content i.e. <% %> Have you tried using <%= %>?

Robin

Also, am I the only one that sees no point in wrapping 'state' as a string in itself? I mean it's a string anyway. You could achieve the same with just <%= state %>, making for more readable code -- is there an advantage I am not aware of in using the <%= "#{state}" %> way?

Perhaps I wasn't clear:

<% states = ['Alabama', 'Alaska', 'Denial'].freeze %> <%= collection_select(:order, :ship_to_state, states.map{|s| [s,
s]}, :first, :first) %>

This should generate a <select> tag for the instance variable :order
that affects the ship_to_state attribute. It should contain a
<select> tag for each state with a value and display element exactly
the same: The name of the state.

What, specifically, is not working?

<<<<<< <option value="<% "#{state}" %>"> <% "#{state}" %></option>

Also, am I the only one that sees no point in wrapping 'state' as a string in itself? I mean it's a string anyway. You could achieve the same with just <%= state %>, making for more readable code -- is there an advantage I am not aware of in using the <%= "#{state}" %> way?

No, you're not. I thought the same thing but was at work and couldn't linger over the question too long. I don't see that there is any additional benefit.

Robin

I'm so silly to forget to add = as in <%= state %> I'm not at my computer at the moment. Will try this a bit later.

Cheers, Elle

Well, my original code works by just adding the = sign.

Silly me. Thanks guys,

Elle