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

#はじめに
オリジナルアプリを作成中に任意のカラムであるが値のあるレコードだけ表示をさせたいと思い、試行錯誤した内容をアップします。
ググっても記事がなかったので、間違っていたり、もっといい方法があれば教えてください!

#環境
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メソッドを使用しましたが、他にいい方法があれば教えていただけたら幸いです!

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?