我有两个模型:专辑和曲目。Album 有很多曲目,Track 属于专辑。
我希望能够在创建专辑时根据需要创建尽可能多的曲目,类似于railscasts 第 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
这些错误消息不是特定于模型的,都位于页面顶部,并且每个模型只出现一次(请注意,我将两个字段都留空并且错误消息只出现一次 - 不特定于哪个轨道) .
为了生成初始曲目字段,我在专辑控制器的新操作中添加了以下行: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 %>
我尝试将顶部替换为<%= f.error_messages %>
(<%= error_messages_for @album %>
仅显示专辑的消息),并添加一个<%= error_messages_for track %>
(显示特定于每个曲目的错误消息)——但这并不能解决问题。有人知道如何解决这个问题吗?
谢谢!