Ruby - 自动从下拉框中选择项目

时间:2013-06-06 21:43:51

标签: html ruby drop-down-menu sinatra

我的countries模型中有Foo哈希值:

def self.available_countries
    {:au => 'Australia',:dk => 'Denmark',:en =>'England', :fr => 'France', :my => 'Malasyia',:nz => 'New Zealand'}
end

通过下面的表单,我从country对象中选择foo并保存:

<form action="save_foo" method="post">
<!-- some text boxes -->
<label for="config-country">Country</label>
  <select name="country" id="config_country">
   <% Foo.available_countries.each do |code, country| %>
    <option value="<%= code =%>"><%= country =%></option>
   <% end %>
  </select>
<input type="submit" value="Save" />
</form>

保存表单后,我想通过编辑表单编辑保存的记录:

 <form action="edit_foo" method="post">
   <!-- some text boxes -->
    <select id="config_country" name="country">        
          <% Foo.available_countries.each do |code,cont|%>
             <% if @foo.country.eql? code %>
                <option value="<% code %>" selected><%= cont =%></option>
              <% else %>
                 <option value="<% code %>"><%= cont =%></option> 
              <% end %>         
          <% end %>
          </select>
      <input type="submit" value="Update" />
    </form>

但是现在无法动态选择已保存的country ..意味着它只是默认显示下拉框。

更新

例如,我选择Denmark并保存表单,当我尝试编辑记录时Australia被选中,因为它是第一个元素..但这应该是Denmark

select box有什么问题?感谢。

1 个答案:

答案 0 :(得分:0)

我猜你在这里用符号比较一个符号:

<% if @foo.country.eql? code %>

第一种形式呈现:

<option value="au">Australia</option>

所以你可能会保存一个字符串。

<% if @foo.country.eql? code %>更改为<% if @foo.country.eql? code.to_s %>