2011-03-11 25 views
0

當我有一個關係,如:Rails爲什麼acts_as_taggable不需要以嵌套形式創建標籤?

class Programmer < ActiveRecord::Base 
    has_many :projects 
    has_many :assignments, :through => :projects 
    acts_as_taggable 
end 


class Assignment < ActiveRecord::Base 
    has_many :projects 
    has_many :programmers, :through => :projects 
end 

在一個單一的形式進入這兩個程序員和分配數據需要我有一個嵌套的表格。爲什麼當我有一個標籤字段時,標籤不需要處於嵌套形式?

例如,這不起作用

<%= form_for(@programmer) do |p| %> 
    <%= p.label :name %><br /> 
    <%= p.text_field :name %><br /> 
    <%= p.label :assignments %><br /> 
    <%= p.text_field :assignments %><br /> 
    <%= p.submit %> 
<% end %> 

但爲什麼這項工作?

<%= form_for(@programmer) do |p| %> 
    <%= p.label :name %><br /> 
    <%= p.text_field :name %><br /> 
    <%= p.label :tag_list %><br /> 
    <%= p.text_field :tag_list %><br /> 
    <%= p.submit %> 
<% end %> 

回答

0

的不太詳細的答案是當你使用tag_list=是acts_as_taggable_on處理標籤的創建。

一個例子IRB會議:

$> photo = Photo.last 
$> photo.tag_list # ['outer space', 'andromeda'] 
$> photo.tag_list = "outer space, andromeda, galaxy" 
$> photo.tag_list # ['outer space', 'andromeda', 'galaxy'] 
$> photo.save 
# checks the db for existing outer space, andromeda, and 
# galaxy tags on the photo, creates any missing ones, 
# deletes any ones it previously had but you didn't specify 

acts_as_taggable_on可以合理地實現這種方法這是因爲庫可以假設你想檢查的DUP,並刪除任何你沒有提供。默認情況下,在任何通用關聯上執行此操作會很糟糕:)

相關問題