我有一个模型Post,它与另一个模型有许多关系,Tag:
class Post < ActiveRecord::Base
attr_accessible :body, :section_id, :solved, :subject, :tag_ids, :user_id
belongs_to :user
belongs_to :section
has_and_belongs_to_many :tags
has_many :comments
这是标签:
class Tag < ActiveRecord::Base
attr_accessible :subject, :post_ids
has_and_belongs_to_many :posts
validates(:subject, presence: true, :length => { minimum: 3, maximum: 15})
end
当我创建帖子时,我需要允许用户在创建时以与帖子的标题和正文相同的形式向帖子添加标签。标签是预先创建的,永远不会在帖子中创建。我不知道该怎么做。我想使用form_for所以我可以轻松填充Post的字段,但我不知道如何将Tags合并到此并将其发送到控制器。有什么建议?这是我的控制器发送到视图的内容:
@post = Post.new
@tags = Tag.all
答案 0 :(得分:0)
您需要一个字段供用户在表单中输入标签,例如
<input type="text" id="tags" name="tags" />
当请求发布到控制器时,解析标签文本
tags = params["tags"].split(/\s+/) //assuming tags are separated by spaces
tags.each do |t|
tag = Tag.find_or_create_by_name(t)
your_post_object.tags << tag
end
最后,不要忘记在save
your_post_object