【问题标题】:Ruby on Rails: ActiveRecord::AssociationTypeMismatchRuby on Rails:ActiveRecord::AssociationTypeMismatch
【发布时间】:2016-05-08 21:21:33
【问题描述】:

我在尝试提交记录时收到 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

主题.rb

class Subject < ActiveRecord::Base

     has_many :homeworks

     def to_s
     subject
  end
end

这可以正常工作,但突然不行了。我确实将表的名称更改为“主题”并相应地更改了视图和控制器。现在好像在找id?主题是一个字符串。有什么建议吗?谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activerecord


    【解决方案1】:

    根据您的关联模型,您的作业属性应如下所示:

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

    因此,您应该在您的homework_params 中允许subject_id,而不是subject

    collection_select 方法应该是这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多