带有预定义标签的复选框标签

时间:2017-10-12 20:40:51

标签: ruby-on-rails

我正在我的Rails网站上开发一个标签系统。我目前所拥有的是用户可以编写用空格或逗号分隔的标签。我实际想要实现的是,用户可以单击他们想要包含到他们的帖子的标签,并且标签不是用户生成的,他们必须是预定义的。如何将标签提供给数据库并将其作为复选框呈现给用户?我很抱歉,如果问题是如此需要,我只是在寻找一个建议,而不是我可以实现的确切代码。谢谢!

我拥有(用户可以输入标签并生成新标签):

Current tags

我需要什么(用户只能选择和关联,他们无法生成标签):

Desired tags

review.rb

class Review < ApplicationRecord
    belongs_to :reciever, class_name: "User", foreign_key: "sent_to_id"
    belongs_to :sender  , class_name: "User", foreign_key: "sent_from_id"
    has_many :taggings, dependent: :destroy
    has_many :tags, through: :taggings
    validates :content, presence: true, length: {maximum: 255}

    def self.tagged_with(name)
        Tag.find_by_name!(name).reviews
    end

    def all_tags=(names)
      self.tags = names.split(" ").map do |name|
          Tag.where(name: name.strip).first_or_create!
      end
    end

    def all_tags
      self.tags.map(&:name).join(", ")
    end
end

表单中的标记代码:

    <div class="field">
      <%= form.label :all_tags, 'What was the work about?' %>
      <%= form.text_field :all_tags, placeholder: "Tags separated with space" %>
    </div>

0 个答案:

没有答案