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