初めに
Qiitaの投稿頻度を上げていけるように、日頃から直面した問題から背かないように課題解決を意識していきます。
問題
今回は、ProgateのSNSアプリをローカル環境で実装していたときにエラーメッセージが表示できないことが課題としてありました。具体的には、投稿の詳細ページで空の投稿で更新して、「Contentを入力してください」のようなエラーメッセージを表示させたいです。
前提、ローカル環境とProgateで扱っているRuby on Railsのバージョンがこちらになります。
Progate : Rails5
ローカル : Rails7
ソースコード
def update
@post = Post.find_by(id: params[:id])
@post.content = params[:content]
if @post.save
redirect_to("/posts/index")
else
render("posts/edit")
end
end
解決方法
エラーメッセージを表示させている、edit.html.erb こちらは問題なかったのでコントーラーのupdateアクションを確認しました。そこで、elseの処理 render("posts/edit")
を疑いました。
status: :unprocessable_entity
こちらを追記することで解決できました。また、renderのパスも :edit
に変更する必要がありました。
def update
@post = Post.find_by(id: params[:id])
@post.content = params[:content]
if @post.save
redirect_to("/posts/index")
else
render :edit, status: :unprocessable_entity
end
end
終わりに
バージョンの違いによって起きるエラーに慣れていきたいです。