Rails5を使ってアプリを作っています。
下記のようなboolean型のカラムを4つ持つテーブルがあり、その中身をそれぞれ判定してtrue
だった時のみ個別のメッセージを表示させる、ということをしたいと思っています。
ruby
1class CreatePosts < ActiveRecord::Migration[5.2] 2 def change 3 create_table :posts do |t| 4 t.integer :user_id, null: false, default: 0 5 t.string :title, null: false, default: '' 6 t.text :description, null: true 7 t.boolean :status_1, null: false, default: false 8 t.boolean :status_2, null: false, default: false 9 t.boolean :status_3, null: false, default: false 10 t.boolean :status_4, null: false, default: false 11 12 t.timestamps 13 end 14 end
現状のコードが下記の通りです。
ruby
1# posts_controller.rb 2 3def index 4 @posts = Post.all 5end
erb
1<%# index.html.erb %> 2 3<% @posts.each do |post| %> 4 <ul> 5 <% if post.status_1 %> 6 <li>A</li> 7 <% end %> 8 <% if post.status_2 %> 9 <li>B</li> 10 <% end %> 11 <% if post.status_3 %> 12 <li>C</li> 13 <% end %> 14 <% if post.status_4 %> 15 <li>D</li> 16 <% end %> 17 <% if !post.status_1 && !post.status_2 && !post.status_3 && !post.status_4 %> 18 <li>NONE</li> 19 <% end %> 20 </ul> 21<% end %>
このように、例えばstatus_1
だけがtrue
ならば「A」のみが表示されて、status_2
とstatus_4
がtrue
なら「B」と「D」が表示されるイメージです。
現状のコードで特にエラーもなく期待通りの結果が得られてはいるのですが、明らかに冗長な書き方なので、どうにかもう少しスマートに記述ができないものか...と思っているところです。コードをご覧いただいてお分かりの通り、当方まだまだ初心者でして、なにか良いアイディアがございましたらご教示いただけますと幸いです。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/04 00:34