#redirect時のflashとrender時のflashの違い
これがscaffoldした時のupdateコードですね(手元のコードから持ってきたのでやや違うかもしれませんが)
update成功時はredirect
ですが、update失敗時はrender
しています。
items_controller.rb
def update
respond_to do |format|
if @item.update(clan_params)
format.html { redirect_to @item, notice: 'Item was successfully updated.' }
format.json { render :show, status: :ok, location: @item }
else
format.html { render :edit }
format.json { render json: @item.errors, status: :unprocessable_entity }
end
end
end
##redirect時のflash
flash
です。
flash[:success]やflash[:notice]、flash[:error]を使って中身のテストができる。
##render時のflash
flash.now
です。
中身のテストは出来ない(描画時は存在するがテスト時にはすでに破棄されているため)
必死にflash内容をテストしようとしても無理です。
テストも壊れやすくなるし、表示あり/なしくらいをテスト対象にしましょう。
##参考にしたサイト
拝啓、シーシュポス: [Rails] flash.now[:notice]とflash[:notice]の違い