2011-10-09 38 views
1

我剛開始使用acts_as_taggable gem。到目前爲止真的很喜歡它,但我有點不清楚如何在表單中使用這個gem。Rails3 acts_as_taggable使用表格

class Photo < ActiveRecord::Base 
    acts_as_taggable_on :tags 
end 

在我的形式對照片我試圖實施一系列的複選框,爲用戶標籤分配給他們的照片:

<%= f.label :tag_list %> 
<%= f.check_box :tag_list, "landscape" %> 
<%= f.check_box :tag_list, "people" %> 

當觀看的形式我得到這個錯誤:

NoMethodError in Photos#edit 
...line #19 raised: 

undefined method `merge' for "landscape":String 
Extracted source (around line #19): 

18:  <div class="float_tag"> 
19:  <%= f.check_box :tag_list, "landscape" %> 

有關如何創建表單的任何想法?

回答

3

我假設你<form>看起來是這樣的:

<%= form_for(@photo) do |f| %> 
    <%= f.label :tag_list %> 
    <%= f.check_box :tag_list, "landscape" %> 
    <%= f.check_box :tag_list, "people" %> 
<% end %> 

你應該改變你的f.checkbox線位:

<%= form_for(@photo) do |f| %> 
    <%= f.label :tag_list %> 
    <%= f.check_box :tag_list, { :multiple => true }, 'landscape', nil %> 
    <%= f.check_box :tag_list, { :multiple => true }, 'people', nil %> 
<% end %> 

提交時將發佈這樣的事情(只例如人們選擇):

{ :post => { :tag_list => ['', 'people'] } } 
+0

是的,這是訣竅。非常感謝你! –

+0

有點希望我明白爲什麼你的答案是正確的 - 有沒有關於這方面的任何文檔?他們讀我沒有詳細說明。 –

2

對於任何人試用爲了讓Rails 4和強大的參數能夠工作,我還必須允許tag_list參數作爲數組。

params.require(:clip).permit(
    :name, :other_params, { tag_list: [] } 
)