1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

投稿の更新に失敗したときにエラーメッセージを表示させたい

Last updated at Posted at 2024-01-16

初めに

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

終わりに

バージョンの違いによって起きるエラーに慣れていきたいです。

1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?