1

我试图设置一个带有标签的博客,但在尝试保存时遇到了问题。

我有3个模型

博客模型

has_many :blog_tags
has_many :tags, :through => :blog_tags

blog_tag 模型

belongs_to :blog
belongs_to :tag

标签模型

[nothing]

当我发布我的博客表单时,我得到一个带有逗号分隔的标签列表的输入字段,我想在 blog_tags 表中创建这些标签。

我一直在尝试一些不同的东西,最后得到了这个

@blog_tags = params[:blog][:tags].split(",")

@blog_tags.each do |tag|
  @tag = Tag.find_by_tag(tag)
  @blog.tags.push(@tag)
end

除了抱怨没有创建父级之外,它似乎还在工作,并且在第二次尝试中,它给了我一个错误,试图拆分字符串“string1”,我猜这是由于没有任何逗号引起的。

我真的希望你们中的一个人可以在这里帮助我,或者至少指出我正确的方向:-)

谢谢!

4

2 回答 2

1

我会去找宝石。例如,尝试https://github.com/mbleigh/acts-as-taggable-on 。

于 2011-09-28T21:59:43.997 回答
0

我认为您只需要处理params[:blog][:tags]没有逗号的情况。在这种情况下,整个字符串是一个标签,所以只需添加它。

您可能还需要处理“ruby, ,rails”之类的情况,即确保标签不为空。

于 2011-09-28T23:48:20.793 回答