【发布时间】:2010-02-27 02:28:02
【问题描述】:
我有两个模型:专辑和曲目。 Album 有很多曲目,Track 属于专辑。
我希望能够在创建专辑时根据需要创建尽可能多的曲目,类似于 railscasts episode 197。不过,与 railscasts 剧集不同的是,Track 表单同时包含标题和描述 - 两者都是必需的。
现在,表单如下所示:
Create New Album
Name: [ ]
Track (remove link)
Name: [ ]
Description: [ ]
Track (remove link)
Name: [ ]
Description: [ ]
(add track link)
如果我决定提交空白表单,我会在表单顶部收到以下错误消息:
Description can't be blank
Title can't be blank
Title can't be blank
这些错误消息并非特定于模型,都位于页面顶部,并且每个模型只出现一次(请注意,我将 both 的字段和错误消息留空只出现一次 - 不特定于哪个轨道)。
为了生成初始曲目字段,我在专辑控制器的新操作中添加了以下行:2.times { @album.tracks.build }
我的表单的要点是这样的:
<% form_for @album do |f| %>
<%= f.error_messages %>
<%= f.label :title %><br />
<%= f.text_field :title %>
<% f.fields_for :tracks do |f, track| %>
<%= render :partial => 'tracks/fields', :locals => {:f => f} %>
<% end %>
<%= f.submit "Submit" %>
<% end %>
我尝试用<%= error_messages_for @album %> 替换顶部的<%= f.error_messages %>(仅显示专辑的消息),并添加<%= error_messages_for track %>(显示特定于每个曲目的错误消息)-但这并没有诡计。
有人知道如何处理吗?
谢谢!
【问题讨论】:
标签: ruby-on-rails multi-model-forms