我正在尝试在我的网站上实现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
...
答案 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