首页 > 解决方案 > 寻找更好的方法来重写我凌乱的代码

问题描述

我正在使用 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


post_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都为真。(我希望我说清楚了。)
这些代码实际上运行良好,我已经得到了我想要的,但我只是不喜欢它们的编写方式。它看起来很乱,显然不聪明。(你可以说我是新手。)有没有更好的方法来重写它们?

标签: ruby-on-rails-5

解决方案


推荐阅读