두 가지 모델, 앨범과 트랙이 있습니다. 앨범에는 많은 트랙이 있고 트랙은 앨범에 속합니다.다중 모델 양식에서 error_messages_for를 사용하는 방법은 무엇입니까?
앨범을 만들 때 필요한만큼 많은 트랙을 만들 수 있습니다. railscasts episode 197과 같습니다. railscasts 에피소드와 달리 트랙 양식에는 제목과 설명이 모두 포함되어 있습니다. 둘 다 필요합니다.
은 지금 형태는 다음과 같습니다
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
이러한 오류를 메시지는 모델에 한정되지 않고 페이지 상단에 있으며 각 모델에 대해 한 번만 나타납니다. 필드를 비워 두어 모두 비어 있으며 오류 메시지는 한 번만 표시됩니다 (특정 트랙과 관련 없음) .
초기 트랙 필드를 생성하려면, 내 album_controller의 새로운 액션에 다음 줄을 추가 :
<% 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 %>
: 2.times { @album.tracks.build }
내 양식이 어떻게 생겼는지의 요점은 이것이다 나는 <%= f.error_messages %>
을 <%= error_messages_for @album %>
(앨범의 메시지 만 표시)으로 바꾸고 (각 트랙의 오류 메시지를 표시하기 위해) <%= error_messages_for track %>
을 추가하려고 시도했지만 트릭을하지는 않습니다. 누구에게이 접근 방법을 알고 있습니까?
감사합니다.
테스트를 거치지 않았지만 종합적인 답변을 해주셔서 대단히 감사합니다! –
레일즈 2.3.5에서 테스트했고 광고 된대로 작동합니다;) – klew