我正在使用Rails开发应用程序。我在下面的表格中有4个布尔列,如果该列为true,我想显示一条消息。
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_1
是唯一的真实列,则将显示'tag_name_A';如果tag_2
和tag_4
都为true,则将显示'tag_name_B'和'tag_name_D' 。 (希望我能说清楚。)
这些代码实际上运行良好,我已经得到了想要的东西,但是我只是不喜欢它们的编写方式。它看起来很凌乱,而且显然不明智。 (您可以说我是新手。)是否有更好的方法重写它们?