#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
条件式もまだまだあいまいではありますが引き続き学習頑張っていきます!!