Я делаю приложение, используя Rails.У меня есть 4 логических столбца в таблице ниже, и я хочу показать сообщение, если этот столбец истинен.
class CreatePosts < ActiveRecord::Migration[5.2]
def change
create_table :posts do |t|
t.integer :user_id, null: false, default: 0
t.string :title, null: false, default: ''
t.text :description, null: true
t.boolean :tag_1, null: false, default: false
t.boolean :tag_2, null: false, default: false
t.boolean :tag_3, null: false, default: false
t.boolean :tag_4, null: false, default: false
t.timestamps
end
end
posts_controller.rb
def index
@posts = Post.all
end
index.html.erb
<% @posts.each do |post| %>
<ul>
<% if post.tag_1 %>
<li><%= 'tag_name_A' %></li>
<% end %>
<% if post.tag_2 %>
<li><%= 'tag_name_B' %></li>
<% end %>
<% if post.tag_3 %>
<li><%= 'tag_name_C' %></li>
<% end %>
<% if post.tag_4 %>
<li><%= 'tag_name_D' %></li>
<% end %>
<% if !post.tag_1 && !post.tag_2 && !post.tag_3 && !post.tag_4 %>
<li>none</li>
<% end %>
</ul>
<% end %>
Таким образом, «tag_name_A» будет отображаться, если tag_1
является единственным истинным столбцом, и будут отображаться «tag_name_B» и «tag_name_D», если tag_2
иtag_4
оба являются правдой.(Я надеюсь, что проясняю себя.)
Эти коды на самом деле работают нормально, и я уже получаю то, что хочу, но мне просто не нравится, как они написаны.Это выглядит грязно и явно не умно.(Вы можете сказать, что я новичок.) Есть ли лучший способ переписать их?