アルバムとトラックの 2 つのモデルがあります。アルバムには多くのトラックがあり、トラックはアルバムに属します。
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
これらのエラー メッセージはモデルに固有のものではなく、すべてページの上部にあり、モデルごとに 1 回だけ表示されます (両方のフィールドを空白のままにして、エラー メッセージが 1 回だけ表示されることに注意してください。どのトラックに固有のものでもありません)。 .
最初のトラック フィールドを生成するために、album_controller の新しいアクションに次の行を追加しました。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 %>
(各トラックに固有のエラー メッセージを表示する) を追加しようとしましたが、うまくいきません。これにアプローチする方法を知っている人はいますか?
ありがとう!