Rails acts_as_taggable_on实现

时间:2012-07-31 00:16:34

标签: ruby-on-rails ruby-on-rails-3

我正在尝试在我的网站上实现acts_as_taggable_on

我已经运行了安装设置,它工作正常。我正在努力研究如何编写代码以使其工作。

我正确的错误如下:第{29}行undefined method 'each' for "tag1, tag2, tag3":String@video = Video.new(params[:video])

这是我的......

视频控制器

acts_as_taggable

以我的形式

= f.text_field :tags

在我的模特中

@video = Video.new(params[:video])
@video.tag_list = params[:video][:tags]
if @video.save
  ...

1 个答案:

答案 0 :(得分:3)

您收到此错误是因为您传递了params[:video],其中包含:tags模型中Video属性的数据。这是一个问题,因为它会使用acts_as_taggable_on的{​​{1}}编写器方法,它需要tags=,而不是Array,而不是String 期待tag_list=

一个解决方案,保留大部分代码,就是从String移除:tags并将其传递给params

tag_list=

上面有很多变化来获得一个有效的解决方案。首先,您可以只提供tags_str = params[:video].delete(:tags) @video = Video.new(params[:video]) @video.tag_list = tags_str if @video.save # ... 想要的内容,将tags=中的:tags分割为params

Array