images_attributesのMysql2::Error: Column 'image_url' cannot be null: INSERT INTO `地獄エラーの解決策【3文字で解決した】

#　はじめに
３日間1つのエラーに苦しみ「調べても調べても調べても」解決できずに時間を削ってしまったので
もし同じような境遇の方に助けになればと思い書かせていだだきます。
(３日間も苦しんだので書かずにはいられない・・・笑)

## こんな感じで画像編集しようとした
```ruby:edit.rb
- @product.images.each_with_index do |image, i|
  %label{class: "sell__image-select__ul-text ul-id-#{i}"}
    = f.fields_for :images, image do |img|
      = img.file_field :image_url,"data-id": "#{i}",class: "file_field"
      %li
        -if image.id.present?
          = image_tag "#{img.object.image_url}",size: "114x116",class:"product_image"
      .btn-box
        %a 編集
        %a{ class: "delete-btn", "data-imgid": "#{image.id}" }削除
```
#### ・ここの解説
@productにはDBから引っ張ってきた商品データが入っていて

```
= image_tag "#{img.object.image_url}",size: "114x116",class:"product_image"
```
ここで商品を表示させてる

## pudateアクションを発動させる

###・エラー文
<img width="1437" alt="スクリーンショット 2019-06-16 13.05.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/346005/875c7462-cf13-e2e3-ef96-5a02610e13a4.png">

###・paramsの中
<img width="1440" alt="スクリーンショット 2019-06-16 13.04.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/346005/5e92d1f9-31d9-7b28-1a72-2adcbffd1139.png">

んーー確かにimage_urlはないな・・・

###・ストロングパラメーターはこちら(一部省略)
```ruby:products_controller.rb
private
def update_params
params.require(:product).permit(:name,images_attributes: [:image_url]).merge(seller_id: current_user.id)
end
```
## ならばimage_urlを入れてみよう
```ruby:edit.rb
- @product.images.each_with_index do |image, i|
  %label{class: "sell__image-select__ul-text ul-id-#{i}"}
    = f.fields_for :images, image do |img|
      = img.file_field :image_url,"data-id": "#{i}",class: "file_field"
      %li
        -if image.id.present?
          = image_tag "#{img.object.image_url}",size: "114x116",class:"product_image"
          = img.hidden_field :image_url, val: img.object
      .btn-box
        %a 編集
        %a{ class: "delete-btn", "data-imgid": "#{image.id}" }削除
```
### ・出来上がったparamsはこちら
<img width="1440" alt="スクリーンショット 2019-06-16 13.06.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/346005/9b49748b-f0ed-bff8-fb90-70fe6f17bbfa.png">

見にくいですけどimage_urlは入ってますね
ならばアップデートアクションを動かしてみよう。

##結果・・・
<img width="1440" alt="スクリーンショット 2019-06-16 13.07.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/346005/8d0ca279-88fe-ea3f-e74a-cfb82ef9b759.png">
どぉぉぉぉしてだよぉぉぉ〜

エラーの言う通りimage_urlは入れたし
何がいけないんだ・・・TT

ここで数日間止まりました。。

##解決策
```ruby:products_controller.rb
private
def update_params
params.require(:product).permit(:name,images_attributes: [:image_url,:id]).merge(seller_id: current_user.id)
                                                                    #:idを追加
end
```
これだけです。。
なので

```ruby:edit.rb
- @product.images.each_with_index do |image, i|
  %label{class: "sell__image-select__ul-text ul-id-#{i}"}
    = f.fields_for :images, image do |img|
      = img.file_field :image_url,"data-id": "#{i}",class: "file_field"
      %li
        -if image.id.present?
          = image_tag "#{img.object.image_url}",size:"114x116",class:"product_image"
          #= img.hidden_field :image_url, val: img.object
          #これは必要ありません
      .btn-box
        %a 編集
        %a{ class: "delete-btn", "data-imgid": "#{image.id}" }削除
```
paramsは今まで通り
image_urlはない状態
<img width="1440" alt="スクリーンショット 2019-06-16 13.08.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/346005/2c724485-aa90-2472-5291-336499f30d4a.png">
これで通ります・・・
画像編集時には

```
images_attributes: [:image_url,:id]
```
idがいるんですね。
(どの画像を編集するのだ？)と言うことだったんですね・・・

むちゃくちゃ強引にアレンジしてすればもしかしたら通すことができたかもしれませんが
しっかり戦ってよかったなぁと思いました。。

このエラーに３日も使ってしまったので
もお同じことを繰り返すまいとおQiitaに保存します。

最後まで読んでいただきありがとうございました。