我有两个模型,场地和音乐会。音乐会属于一个场地,场地有很多音乐会。在我的表单中,我使用自定义设置器设置音乐会场地,表单如下所示:
<%= 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
问题是,如果正在创建模型,我还想向模型添加地址。这可能与孩子的形式?是否可以将名称和地址同时传递给设置器?
编辑:
正如下面建议的评论,我已经开始使用accepts_nested_attributes_for。Ryan Bates 在这里有一个很棒的截屏视频:http ://railscasts.com/episodes/196-nested-model-form-revised或者文档也很好。
我之前曾为此使用过accept_nested,但由于这是belongs_to方面的问题,所以我很挣扎。现在我已经回去了,我的修复是,对于这个例子,不是做 @concert.venue.build,belongs_to 方面的语法是 @concert.build_venue