2016-05-08 28 views
0

我在嘗試提交記錄時遇到ActiveRecord :: AssociationTypeMismatch錯誤。Ruby on Rails:ActiveRecord :: AssociationTypeMismatch

主題(#88982676)預期,得到了字符串(#20223000)

查看:

<%= f.collection_select :subject, Subject.order(:subject), :subject, :subject, {prompt: "Select a subject"}, {class: "form-control"} %> 

控制器:

def create 
      @homework = current_user.homeworks.build(homework_params) 
      if @homework.save 
       redirect_to homeworks_path 
      else 
       render 'new' 
      end 
     end 
... 

def homework_params 
      params.require(:homework).permit(:subject, :description, :date, :completed_at) 
     end 

型號:Homework.rb

class Homework < ActiveRecord::Base 

validates :subject, presence:true 

    belongs_to :subject 

def completed? 
    !completed_at.blank? 
end 


end 

subject.rb中

class Subject < ActiveRecord::Base 

    has_many :homeworks 

    def to_s 
    subject 
    end 
end 

這種利用工作,但突然沒有。我沒有改變表的名稱爲「主題」,並相應地更改了視圖和控制器。它現在似乎在尋找身份證?主題是一個字符串。有什麼建議?謝謝。

回答

1

根據您的關聯模型,你的作業屬性應該是這樣的:

subject_id:integer description:string date:datetime completed_at:datetime

因此,你應該允許subject_id,而不是subjecthomework_params

至於collection_select方法,應該是這樣的:

f.collection_select :subject_id, Subject.order(:subject), :id, :subject