前提
この記事のVS codeにインストールしたrails6.0.0
を使用しています。
私のオリジナルアプリケーション(躓いたこと)を用いて、誰かの役に立つ記事になればと思います。
結論
binding.pry
で一時停止をして、パラーメータをチェックする。
※Gemfileに「gem 'pry-rails'」を記入し、「bundle install」を行う必要あり。
MVCを理解し、間違いを探す方法を習得する方法を習得する。
アプリケーション概要
私は写真記録のオリジナルアプリを作成しました。
ユーザー登録をしているメンバーで日本一周の写真を記録するためのアプリケーションになります。
内容
投稿しようと思ったが、情報が投稿されない。
投稿処理
def create
@prototype = Prototype.new(prototype_params)
if @prototype.save
redirect_to root_path
else
render :new
end
end
どうしてもelseに入ってしまい、saveができない。
条件式に入る前に「binding.pry」で一時停止し、パラメーターを確認する。
@prototype
の中身を確認すると・・・
@prototypeの中身の確認
[2] pry(#<PrototypesController>)> @prototype
=> #<Prototype:0x00007f7e0a7960c8
id: nil,
title: "hoge1",
prefecture_id: 2,
created_at: nil,
updated_at: nil>
imageが無い・・・
paramsの中身も確認すると・・・
[1] pry(#<PrototypesController>)> params
=> <ActionController::Parameters {"authenticity_token"=>"WY1QbFTGg8VbpOKOhEZF4tSjk05Sy4T5YzAhWYbnEZgmriZ8GaI2764yXaVsaVJ9eZFK6f7i3iQ6Q+5sHCnABQ==", "prototype"=><ActionController::Parameters {"title"=>"hoge1", "prefecture_id"=>"2", "image"=>#<ActionDispatch::Http::UploadedFile:0x00007f7e097b6bd0 @tempfile=#<Tempfile:/var/folders/bd/d59l1pvn1jqdqlv9lshrsswh0000gn/T/RackMultipart20220610-15050-3h6jx4.jpg>, @original_filename="IMG_7163.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"prototype[image]\"; filename=\"IMG_7163.jpg\"\r\nContent-Type: image/jpeg\r\n">} permitted: false>, "commit"=>"投稿する", "controller"=>"prototypes", "action"=>"create"} permitted: false>
params
の中には、imageが入っているのでprivate
で何か間違いがあるか?
結局はmodelの記述に問題がありました。
最後に改めて、「MVCを理解し、間違いを探す方法を習得する方法を習得する。」これを強く感じました。