データあるなしでの条件分岐

present?

商品一覧表示機能の実装に取り組みます。 出品された商品データをトップページに一覧表示させる機能を実装していきます。 また、商品が何も出品されていな場合はダミー商品を表示させることとします。

まず、商品のインスタンス変数に何かしらのデータが入っている場合は、データをひとつずつ取り出して一覧表示をさせるようにします。

データがあるかないかを確認するため presentメソッド を、データが入っている場合はそれらをすべて表示できるように eachメソッド を使います。

● items_controller.rb

def index
  @items = Item.all
end

● index.html.erb

<% if @items.present? %>
 <% if @items.each do |item| %>
     中略
<% end %>

これでモデルにデータが保存されている場合は、商品情報がトップページに表示されるようになりました。 商品が何も出品されていない場合は else で分岐させ、何も商品が出品されていないときのみダミー商品が表示されることとします。 実装完了! Issue内には商品が売れてしまっている場合は『soldout』と表示させる条件も入っていますが、 現時点では商品購入機能の実装がまだなのでステイです。

presentメソッドとあわせて紹介されていたメソッドがあるので備忘録として記載しておきます。

nil?メソッド
変数.nil?

nilとは一言で言うと「何も存在しない」という意味です。 変数自体が存在しないかどうかを判定します。

empty?メソッド
変数.empty?

変数の値が空白かどうかを判定します。

blank?メソッド
変数.blank?

変数そのものが存在しないか、変数の値が空白かどうかを判定します。 nil?メソッドとempty?メソッドの併せ技みたいなもののようです。

なので、else とせずとも blank? でも同様の結果が得られます。

<% if @items.blank? %>

これもまた然り。

こちらに実験要素強めの記載あり

ブログを綴っていくにあたって、メモに題材を残しているのをふと見ると

  • valueとparseFloat()とparseInt() 整数どっちがいいんだ?
  • textContentと.innerHTMLどっちがいいんだ

と書き記してある。 一体何を思って残したのだろう? このとき、私は何をしようとしていたのだろう?

メモを残すにももう少し工夫が必要かもしれない...

次回は表示順の並び替えについて綴ります。