2014-04-01 43 views
0

我嘗試通過向更新方法發佈表單來更新模型。情景是,我們有俱樂部,每個俱樂部屬於一個地區。ActiveRecord :: AssociationTypeMismatch在更新模型時

的模型是:

class Region < ActiveRecord::Base 
    has_many :club 
end 

class Club < ActiveRecord::Base 
    belongs_to :region 
end 

我的觀點用來創建表單中選擇元素:

<%= f.collection_select(:region, Region.all, :id, :caption, {}, {class: "form-control"}) %> 

我的控制器看起來像這樣

def update 
    @club = Club.find(params[:id]) 
    if @club.update(club_params) 
     redirect_to @club 
    else 
     render 'edit' 
    end 
end 

帕拉姆區域是允許的。我的錯誤在哪裏?

感謝

回答

0

應該region_id而不是region(也club_params實現):

<%= f.collection_select(:region_id, Region.all, :id, :caption, {}, {class: "form-control"}) %> 

從您的評論我想你也應該產生遷移增加region_id列到你的clubs表:

bundle exec rails g migration add_region_id_to_clubs region:references 

並運行它:

bundle exec rake db:migrate 
+0

我已經試過了。當我打開編輯表單時,出現錯誤:C#中的NoMethodError#編輯(未定義的方法'region_id'爲#) – Gerrit

+0

@Gerrit是否在'clubs'表中添加了'region_id'列? –

+0

這是我的遷移change_table:clubs do | t | \t \t t.reference:區域 \t結束 – Gerrit

相關問題