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

こんにちは!

最終課題でメルカリみたいなwebアプリケーションを
実装しています。
エラーが発生したので記事にしました。

NoMethodError

商品詳細ページにおいて売却済みなら画面に
sold out!!と表示されるように実装していました。

show.html.erb
<%if @item.id == @item.order.item_id %>
        <div class="sold-out">
          <span>Sold Out!!</span>
        </div>
      <% end %>

この記述で売却済みの商品詳細ページに遷移すると、
以下のように表示されホッとしてました。

Image from Gyazo

しかし、売却されていない商品詳細ページへ
遷移しようとするとエラーが‥

スクリーンショット 2021-06-28 14.53.42.png

このエラーで3時間泣きました。

エラーの原因

if文を使っているのになんでfalseの処理をしてくれへんねん!!
と泣きながら叫んでました。

そもそもshow.html.erbで記述した条件式だと、
odersテーブルにitem_idが存在している前提で
話を進めちゃってるのでエラーが出て怒られちゃったみたいです。
エラー文のちっちゃいところに

undefined method `item_id' for nil:NilClass

ってitem_idがないやんけアホンダラア!!!!って書いてますね。

エラーの解消

条件式の内容を見直しました。
ordersテーブルのitem_idとitemテーブルのidが等しいか等しくないかとか
ネチネチ細かく記述しないで
もうordersテーブルがあるかないかで条件式を組みました。

<% unless @item.order == nil %>
        <div class="sold-out">
          <span>Sold Out!!</span>
        </div>
      <% 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?