2013-01-14 68 views
0

我有兩個模型,場地和音樂會。音樂會屬於一個場地,場地有許多音樂會。在我的形式,我設置的音樂會場地使用定製的setter,形式看起來像:爲父模型設置值

<%= form_for @concert do |f| %>  
     <%= f.label :venue_name, "Venue" %> 
     <%= f.text_field :venue_name %> 

然後在我的模型:

def venue_name=(name) 
    self.venue = Venue.find_or_create_by_name(name) if name.present? 
    end 

這樣做的問題是,我還想添加一個模型的地址,如果它正在創建。這可能與孩子的形式?是否有可能將名稱和地址傳遞給setter?

編輯:

正如評論所說下面我搬到使用accepts_nested_attributes_for。瑞恩貝茨在這裏有一個偉大的截屏:http://railscasts.com/episodes/196-nested-model-form-revised或文檔也很好。

我之前用這個函數accept_nested來處理這個事情,但是因爲這是在belongs_to方面的事情而掙扎。現在我回過頭了,我的修復是,對於這個例子,而不是做@ concert.venue.build,其中belongs_to方面的語法是@ concert.build_venue

+1

這聽起來像[嵌套屬性]的工作(http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html)。 – Matchu

回答

0

如果你向用戶顯示他們可以在模型上添加逗號,符號,分號等分隔的名稱和地址,您可以使用正則表達式分隔它們中的兩個,並分別插入它們中的每一個。

這是醜陋的方式。