ユーザー登録と同時にhas_manyのモデルを同時に作成できるシステムを作成しています。
そのhas_manyのモデル(NewPuppyRequest)はPrefectureとの間に中間テーブルを持っており、formで複数都道府県を選択し、中間テーブルにそれを格納する際に以下のようなエラーが出ます。
Couldn't find Prefecture with ID=15 for NewPuppyRequest with ID=
こちらの解決方法をご教示願います。
よろしくお願いいたします。
**controller** def new @user = User.new end def create @user = User.new(user_params) @new_puppy_request = @user.new_puppy_requests.build(new_puppy_request_params) if params[:confirm].present? if @user.valid? render :confirm else if params[:user][:new_puppy_requests_attributes].present? render "new_puppy_requests/new" else render :new end end return end if params[:back].present? render :new and return end if @user.save sign_in(:user, @user) render :complete else render :new end end private def user_params params.require(:user). permit(*%i(name01 name02 kana01 kana02 email email_confirmation password password_confirmation post_code pref city apart tel)) end def new_puppy_request_params params.require(:user).require(:new_puppy_requests_attributes).require("0").permit! end
**NewPuppyRequest model** has_many :new_puppy_request_pick_up_possible_prefecture_relations, dependent: :destroy has_many :pick_up_prefectures, through: :new_puppy_request_pick_up_possible_prefecture_relations, source: "prefecture" accepts_nested_attributes_for :pick_up_prefectures
**Prefecture model** has_many :new_puppy_request_pick_up_possible_prefecture_relations has_many :new_puppy_requests, through: :new_puppy_request_pick_up_possible_prefecture_relations accepts_nested_attributes_for :new_puppy_request_pick_up_possible_prefecture_relations
**new.slim** = form_for(@user, url: user_registration_path) do |f| = f.fields_for :new_puppy_requests, f.object.new_puppy_requests.build do |ff| - Region.includes(:prefectures).each do |region| = ff.collection_check_boxes :pick_up_prefecture_ids, region.prefectures, :id, :pref do |b| span.mr5 = b.label { b.check_box(data: { prefecture_id: b.object.id, prefecture_name: b.object.pref, parent_region_id: region.id }) + b.label }
**confirm.slim** = form_for(resource, as: resource_name, url: { action: "complete" }, html: { id: "confirm_form" }) do |f| = f.fields_for :new_puppy_requests, @new_puppy_request do |ff| = ff.fields_for :pick_up_prefectures do |fff| = fff.hidden_field :id
わかりにくい点や、情報の不足等ございましたらご指摘いただけますと幸いです。
あなたの回答
tips
プレビュー