2016-05-08 27 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