2

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ですか?ありがとう。

4

1 に答える 1

0

ここでシンボルと文字列を比較していると思います:

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

最初のフォームは以下をレンダリングします。

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

したがって、おそらく文字列を保存します。

<% if @foo.country.eql? code %>に変更<% if @foo.country.eql? code.to_s %>

于 2013-06-07T10:02:50.990 に答える