2012-07-31 118 views
2

我想在我的網站中實現acts_as_taggable_onRails acts_as_taggable_on implementation

我已經運行安裝設置,它工作正常。我正在努力研究如何編寫代碼來使其工作。

我得到正確的錯誤如下:undefined method 'each' for "tag1, tag2, tag3":String在行29是@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

這將會是巨大的,如果你能提供一些細節,在準確代碼行你提到的錯誤是指如果它是自己編寫的代碼*(與來自'acts_as_taggable_on' gem)*的代碼相比),以及該代碼的上下文。 – deefour 2012-07-31 00:40:30

+0

@Deefour,我編輯了我的答案。 – 2012-07-31 01:04:12

回答

3

你得到這個錯誤,因爲你傳遞params[:video]其中包含您的Video模型中的:tags屬性的數據。這是一個問題,因爲它會使用acts_as_taggable_on的作家方法tags=,其預計的Array,不是String,不像tag_list=期望String

一個解決方案,保留大部分代碼作爲是會從params刪除:tags並把它傳遞給tag_list=

tags_str = params[:video].delete(:tags) 
@video = Video.new(params[:video]) 
@video.tag_list = tags_str 

if @video.save 
    # ... 

當然也有上述諸多變化,以獲得一個有效的解決方案。首先,你可以給tags=什麼是想要的,在params分裂:tagsArray

video_params = params[:video] 
video_params[:tags] = video_params[:tags].split(/\,\s*/) 
@video = Video.new(video_params) 

if @video.save 
    # ... 
+0

感謝您的回答。我認爲'分裂!'不存在,但是 – 2012-07-31 01:25:33

+0

這就是我衝過來的。謝謝,更新了答案。 – deefour 2012-07-31 01:27:30

+0

而且只有第一種解決方案起作用。在第二個,acts_as_taggable_on抱怨說它沒有收到一個Tag元素。 – 2012-07-31 01:30:41