0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

画像アップロードでエラーメッセージの重要性を再認識した話

Posted at

作成中のブログアプリで発生したエラーを解消した経緯です。画像をアップロードすると・・・ブログ記事と画像がデータベースに登録されてindex画面に移動するはずが、エラー表示。

Nil location provided. Can't build URI.

・・・というエラーメッセージが表示されます。早速原因究明です。

####エラーが出るまでにやったこと
・ImageMagickのインストール
・必要なgem(carrierwave と mini_magick)のインストール
・imageカラムの作成
・Uploaderファイルの作成と設定
・・・などの一連の作業をやっていましたが、特に問題点はなさそう。

####検証
①'Nil location provided. Can't build URI.'は、「locationが与えられていないからURIが作成できない」と言っているらしいが・・・いまいち意味が不明。

②Googleでこのメッセージを調べてみると、データの入っていないカラムがあるとこのメッセージが出てくるらしい。どうもこれが原因っぽい。

③rails consoleで 'Blog.all' でチェック。imageカラムを作成するより前にテストで投稿したブログ記事には画像を登録していない!

④imageカラムが空の記事を全て削除→症状変わらず

⑤新たに画像を登録したはずの記事について、再度コンソールで呼び出して確認。
スクリーンショット 2020-10-22 21.45.17.png
タイトルと本文は登録できているが、画像が登録されていない。そのためエラーが発生している!ということのようです。

####コンソールのエラーメッセージ確認
登録自体はできているようなので、コンソールに出ている記述を確認してみました。そこに怪しい記述を発見。
スクリーンショット 2020-10-22 21.20.18.png
image と image_cache が'Unpermitted parameters'と書かれていました。

permissionといえば・・・というのでcontrollerファイルを見直してみたところ、それらしき箇所がありました。strong parameterです。

def blog_params
  params.require(:blog).permit(:title, :content)
end

ここにimage と image_cache がない→パラメーターが許可されていない!ということのようです。

def blog_params
  params.require(:blog).permit(:title, :content, :image, :image_cache)
end

要素を追加して実行してみたところ、無事に画像のアップロードが成功しました。

エラーメッセージを丁寧に確認することがエラー解決への近道だということを身をもって経験したという話でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?