0
1

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

#WHY
情報が入ってるか否かでよく使うのがnil?やblank?といったものですがいまいち違いがわからなかったため、調べてみました。
結果、記事はたくさんみつかったのですが忘れないためにもアウトプットしていきます。


def index
    @items = Item.all
end

コントローラーでこのような記述をしたとします。
このときHTML文で

 @itemsにデータがあるとき↓を表示させたい!
<% @items.each do |item|%>
  <%= image_tag(item.image, class: "item-img") %>
<% end %>


 @itemsにデータがない時表示させたい!
<%= image_tag "sample.jpg", class: "item-img" %>

このような記述をします。
Itemsテーブルにデータがあればtrueなければfalseと言う感じにすればいいのですがすでにeach文ではItemsテーブルにデータがあれば繰り返し処理を、なければなにも表示されません。
なので下のコードだけ
Itemsテーブルにデータがあれば表示しない、データがなければ表示するとします。

ここで今回のメインテーマですがif文の条件式に何を持って来ればいいのか?
候補はnil? , empty? , blank?の3つです。
それぞれのあてはめて考えてみましょう

if @items.nil?

nilだと@itemsという変数自体の有無になります。
@itemsという変数自体は定義して存在しているのでこれだと中のデータがあろうがなかろうが結果はfalseです。

if @items.empty?

emptyだと@itemsが存在していることが前提で中の情報を判断するのでいけそうですね!trueが帰ってきます!

if @items.blank?

blankは変数およびその中のデータもみてくれるのでいけますね!
nilとemptyが合わさったようになります!
ちなみにblankはrailsで拡張されたメソッドなのでRubyだけでは使えないらしいです

今回お世話になったサイトです
https://railsdoc.com/active_support


条件式もまだまだあいまいではありますが引き続き学習頑張っていきます!!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?