ActiveStorage複数枚の画像添付時のエラー対処法:wrong number of arguments (given 0, expected 1..2)

rails-prograshi(プロぐらし)-kv Rails
記事内に広告が含まれていることがあります。

ActiveStorageの使用手順通りに、インストールやコーディングを行い、いざアップロードを行うと次のようなエラーが発生。

このエラーの対処法について。

エラー内容
ArgumentError in UsersController#update

wrong number of arguments (given 0, expected 1..2)


症状

ActiveStorageをインストール&マイグレーションし、has_many_attachedでActiveRecordと関連付けしたことで、画面上にアップロード画面が表示されている状態。

画像を複数選択しアップロードするとエラーが発生する。


原因

原因はストロングパラメータの記述間違い。

    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: []


以上で修正完了です。

タイトルとURLをコピーしました