#はじめに
オリジナルアプリを作成中に任意のカラムであるが値のあるレコードだけ表示をさせたいと思い、試行錯誤した内容をアップします。
ググっても記事がなかったので、間違っていたり、もっといい方法があれば教えてください!
#環境
rails, '~> 6.0.0'
ruby '2.6.5'
#概要
任意のカラムであるwanted_listに対し、値があるものだけを表示させる
#eachメソッド内の条件分岐を試してみた
<div class='item-lists'>
<% @tweets.each do |tweet|%>
<% unless tweet.wanted_list.blank? %>
<%= tweet.wanted_list %>
<%end%>
<%end%>
</div>
@tweetsには投稿した全てのレコードが入っているため、eachメソッドで配列として呼び出し、wanted_listが空""でなければリストを出力するとした。
しかし、空のレコードも全て呼び出されてしまいました。。
そこで初めて、if文は最初のレコードのみに影響することが判明し、使用を断念しました。
#selectメソッドで条件分岐を試してみた
<div class='item-lists'>
<% @tweets.last(8).select do |tweet|%>
<% if tweet.wanted_list!="" %>
<%= tweet.wanted_list %>
<%end%>
<%end%>
</div>
書き方はeachメソッドとほぼ一緒です。
異なる点は、条件分岐で !="" と定義し空でなければとしてみました。
イメージとしては、一つずつピックアップして条件に当てはめる感じです。
これで、
「wanted_listが空のときは表示させない=wanted_listに値のあるものだけを表示」
させることに成功しました。
※last(8)は最新のレコードから8個という意味・・・controllerのorderメソッドによります。
#結論
eachメソッドはスタート値に依存するため、細かい条件分岐には向かないことがわかりました。
私は、selectメソッドを使用しましたが、他にいい方法があれば教えていただけたら幸いです!