簡體   English   中英

Ruby on Rails:ActiveRecord :: AssociationTypeMismatch

[英]Ruby on Rails: ActiveRecord::AssociationTypeMismatch

嘗試提交記錄時出現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

這可以工作,但突然不起作用。 我確實將表的名稱更改為“主題”,並相應地更改了視圖和控制器。 它似乎正在尋找ID? 主題是一個字符串。 有什么建議嗎? 謝謝。

根據您的關聯模型,您的作業屬性應如下所示:

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

因此,您應該允許subject_id ,而不是homework_paramssubject

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM