由於當前應用程序的靈活性有限,我正在關閉acts_as_taggable_on。相反,我從頭開始構建自己的標籤作爲自己的模型。不過,我已經錯過了表單的「@ model.tag_list」方法,它會分割逗號分隔的用戶輸入並製作單個標籤。我的「可標記」模型是一個視頻,我很好奇如何編寫一個本質上可以像「tag_list」一樣的方法?如何接受以逗號分隔的列表爲模型構建標籤?
例子:
<%= form_for @video do %>
<%= f.text_field :tag_list %>
....
給定輸入:"one, two, three"
將建立三個標籤作爲@video的孩子。
@video.tags.each do |tag|
puts tag.name
end
=> one
two
three
編輯
我真的很喜歡這個在Tag模型,以保持形狀塞滿我的控制器。也許作爲一個自定義屬性?也許視頻模型會更有意義?我知道如何自定義方法來返回自定義數據,但不分配它。一些研究指出我這樣(沒有測試)
video.rb
def tag_list=value
value.split(',').each do |tag|
self.tags.build(:name => tag).save
end
end
這對我沒用 - 當我發佈表單時,我得到「標記無效」錯誤。你能發佈你的完整代碼嗎?謝謝。 – Anand 2016-03-16 12:07:05
@Anand是4年前的......但是這聽起來像是你對'tag'的驗證沒有被滿足。 – 2016-03-16 16:54:21