1

ユーザー、プロファイル、およびプロフェッショナル詳細モデルを含むフィールドを持つネストされたフォームがあります。ユーザーには 1 つのプロファイルがあります。プロファイルには、多くの専門的な詳細があります (ファイル フィールドとしてのドキュメントと説明テキスト フィールドを含みます)。

ここで直面している問題は、これら 3 つのモデルのネストされた形式であるプロファイル ページを更新しているときです。新しい専門的な詳細を追加してフォームを送信すると、古い専門的な詳細は nil になり、専門的な詳細の新しいオブジェクトが作成されます。パラメータはこのようになります

 {"utf8"=>"✓",     "_method"=>"patch","authenticity_token"=>"+pPcQC1hVJ+u0NS+ApOJbfwGG4NCBkURUA+BZ4ZaTMpMKQihrymC7aVl59D89SnGxt08kCMItqph2yXkOp1WsQ==",
 "user"=>
  {"dob"=>"1944-06-07",
   "name"=>"Etikazzz",
   "tag_list"=>"",
   "profile_attributes"=>
    {"gmc_number"=>"",
     "phone_number"=>"919999999999",
     "description"=>"hellloo",
     "job_description"=>"Engineer1",
     "professional_details_attributes"=>
      {"0"=>{"description"=>"fg", "id"=>"139"},
       "1"=>
        {"document"=>
          #<ActionDispatch::Http::UploadedFile:0xbdd3d160
           @content_type="application/pdf",
           @headers=
            "Content-Disposition: form-data; name=\"user[profile_attributes][professional_details_attributes][1][document]\"; filename=\"pdf-sample.pdf\"\r\nContent-Type: application/pdf\r\n",
           @original_filename="pdf-sample.pdf",
           @tempfile=#<File:/tmp/RackMultipart20150722-2984-onumi8.pdf>>,
         "description"=>"sd"}},
     "id"=>"74"}},
 "commit"=>"Complete Profile",
 "controller"=>"profiles",
 "action"=>"complete_profile"}    
"0"=>{"description"=>"fg", "id"=>"139"},

これは古いプロの詳細オブジェクトです。User を更新すると、ドキュメント パーツは nil になります。この場合、以前に保存されたドキュメントが nil になるのはなぜですか?

4

1 に答える 1

0

:id私が言ったように、メソッドに を追加すると、strong_params問題が解決するはずです

params.require(:user).permit(:id,:tag_list,:email,:role_ids, :activation_token,:uid,:provider,:password,:password_confirmation,:name,:avatar,‌​:dob, profile_attributes: [:id,:address,:country_id,:state_id,:city,:gmc_number,:phone_number,:description‌​,:job_description,professional_details_attributes:[:document,:id,:description,:_d‌​estroy]])
于 2015-07-28T09:58:46.787 に答える