2013-08-28 48 views
0

紅寶石版本一個選擇菜單:2.0抓住名稱和ID從另一個控制器Rails中

Rails的版本:4.0

我可能已經過去複雜,但我有2個控制器 - ResidentGuest

resident.rb

class Resident < ActiveRecord::Base 
    has_many :guests 
end 

guest.rb

class Guest < ActiveRecord::Base 
    belongs_to :resident 
end 

guest虛擬機遷移

class CreateGuests < ActiveRecord::Migration 
    def change 
    create_table :guests do |t| 
     t.string :name 
     t.string :phone_number 
     t.integer :resident_id 
     t.belongs_to :resident 

     t.timestamps 
    end 
    end 
end 

我想這樣做是允許用戶選擇ResidentGuest屬於創建一個新的時Guest使用選擇菜單。然而,我不知道如何通過resident.id作爲價值,而resident.name作爲顯示沒有做很多醜陋的手工工作。我怎樣才能做到這一點?這裏是我目前的 - 顯然不工作的代碼。

從guests_controller.rb片段

# GET /guests/new 
def new 
    @guest = Guest.new 
    @residents = Resident.all 
end 

/views/guests/_form.html.erb

<%= form_for(@guest) do |f| %>  
    <div class="field"> 
    <%= f.label :name %><br> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :phone_number %><br> 
    <%= f.text_field :phone_number %> 
    </div> 
    <div class="field"> 
    <%= f.label :resident_id %><br> 
    <%= f.select :resident_id, @residents, 
      prompt: "select a resident" %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

更新:問題解決

泰勒和傑森都是對的,但我給了泰勒「接受的答案,因爲他更接近。

最後我解決我的問題,這條線在控制器:

@residents = Resident.all.map { |resident| [resident.name, resident.id] }

回答

1

嘗試@residents = Resident.all.collect {|r| [ r.name, r.id ] }

相關問題