2017-02-23 95 views
0

好吧,我使用的是Rails 5和最新的Ruby穩定版本。我試圖做的是有一個選擇框在編輯視圖上選擇正確的選項。Ruby On Rails - 表單選擇下拉選擇編輯上的選項

這是我迄今爲止 create_users

class CreateUsers < ActiveRecord::Migration[5.0] 
    def change 
     create_table :users do |t| 
     t.string :email 
     t.string :password 
     t.integer :user_type_id 
     t.timestamps 
     end 
    end 
end 
class CreateUserTypes < ActiveRecord::Migration[5.0] 
    def change 
     create_table :user_types do |t| 
     t.string :name 
     t.text :description 
     t.timestamps 
     end 
    end 
end 

有這些表之間沒有關係,所有的用戶類型僅僅是一個支持表。 我可以得到它輸出下拉並保存到數據庫我只是不能得到補救的事情來顯示在編輯適當的選擇選項。

這裏是我的表單代碼

<%= form_for(user) do |f| %> 
     <% if user.errors.any? %> 
     <div id="error_explanation"> 
      <h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2> 

      <ul> 
      <% user.errors.full_messages.each do |message| %> 
      <li><%= message %></li> 
      <% end %> 
      </ul> 
     </div> 
     <% end %> 



     <div class="field"> 
     <%= f.label :email %> 
     <%= f.text_field :email %> 
     </div> 

     <div class="field"> 
     <%= f.label :password %> 
     <%= f.text_field :password %> 
     </div> 

     <div class="field"> 
     <%= f.label :user_type_id %> 

     <%#= select_tag('user_type', options_for_select(UserType.all.collect {|ut| ut.name ut.id})) %> 
     <% user_type_array = UserType.all().map { |type| [type.name, type.id]} %> 
     <%= f.select(:user_type_id, options_for_select(user_type_array), :selected => f.object.user_type_id) %> 
     <%#= options_from_collection_for_select(UserType.all(), :id, :name) #just outputs text %> 
     <%#= f.select_tag('user_type_id', options_from_collection_for_select(UserType.all(), :id, :name)) %> 
     </div> 
    <%= params.inspect %> 
     <div class="actions"> 
     <%= f.submit %> 
     </div> 
    <% end %> 

回答

1

使用在options_for_select價值,它有一個可選的參數selected

options_for_select(user_type_array, f.object.user_type_id) 
+0

完美謝謝!像魅力一樣工作,forms_for有時會有點混亂!再次感謝! –