ActiveStorageの使用手順通りに、インストールやコーディングを行い、いざアップロードを行うと次のようなエラーが発生。
このエラーの対処法について。
エラー内容
ArgumentError in UsersController#update
wrong number of arguments (given 0, expected 1..2)
症状
ActiveStorageをインストール&マイグレーションし、has_many_attachedでActiveRecordと関連付けしたことで、画面上にアップロード画面が表示されている状態。
![](https://prograshi.com/wp-content/uploads/2021/08/image-145-1024x446.png)
画像を複数選択しアップロードするとエラーが発生する。
![](https://prograshi.com/wp-content/uploads/2021/08/image-144-1024x373.png)
原因
原因はストロングパラメータの記述間違い。
def user_params
params.require(:user).permit(:name, :age, :images[])
end
NG :images[]
これでは、キー名が imgaes[] となってしまいます。ここでやりたいことは、imagesというキー名の値に配列を許可することです。
配列を持つパラメータを許可する場合は、パラメータ名: []
とする必要がある。
対処法
ストロングパラメータを次のように修正。
def user_params
params.require(:user).permit(:name, :age, images: [])
end
OK images: []
以上で修正完了です。