2014-09-18 75 views
3

我有嵌套結果/匹配/ 16 /結果/ 13 /編輯在這樣</p> <p>匹配的Active Record協會類型不匹配

在那裏我有以下選擇領域,這顯示了正確的信息(團隊。名稱及其team.id)

<%= f.collection_select :winner, @select_winner_loser, :id, :name %> 

現在,當我嘗試編輯我的結果而選擇一個勝利者,我得到這樣的:

的ActiveRecord :: AssociationTypeMismatch Team(#10504340)預計,得到String(#6163240)

「當分配給關聯的對象的類型不正確時引發。http://api.rubyonrails.org/classes/ActiveRecord/AssociationTypeMismatch.html

贏家是對象,result.rb看起來像這樣

class Result < ActiveRecord::Base 
    has_one :match 
    belongs_to :winner, class_name: "Team" 
    belongs_to :loser, class_name: "Team" 
end 

@select_winner_loser來自我results_controller

def edit 
    @select_winner_loser = [] 
    @select_winner_loser << @match.top 
    @select_winner_loser << @match.bottom 
    end 

Match.top &底部也是球隊物體

class Match < ActiveRecord::Base 
    belongs_to :top, class_name: "Team" 
    belongs_to :bottom, class_name: "Team" 
    ... 
    belongs_to :result 
end 

我不明白爲什麼我會得到這個,因爲我在我的選擇領域有正確的對象,任何想法?

感謝

回答

12

變化

<%= f.collection_select :winner, @select_winner_loser, :id, :name %> 

<%= f.collection_select :winner_id, @select_winner_loser, :id, :name %> 

,並允許您相應的參數。當它看到名稱中的_id時,Rails將創建一個Team對象。

+1

謝謝你lunr :),不得不改變我的遷移文件,我贏了,而不是我的db中的winner_id,並做出了你指出的改變。 – Pierre 2014-09-19 20:10:06