マルチモデル フォームがあり、ネストされたモデルに関連するエラーをキャプチャできないようです。これは、Project->Team->Roles->Role_skill_relationship という形式の階層です。プロジェクト モデル インスタンス @project に関連するエラーをキャプチャできますが、Role および Skills モデルに関連する検証をキャプチャできませんでした。エラーは、画面にリダイレクトしてフラッシュするのではなく、ブラウザ ページに直接返されます。フォームのロール部分を意図的に間違って記入した場合のエラーの一例は次のとおりです。
Roles#create の NoMethodError
C:/Users/Dstile/Documents/GitHub/creunity_app/app/views/skills/_form.html.erb を表示すると、8 行目が発生します。
nil:NilClass の undefined メソッド `map' 抽出されたソース (8 行目あたり)
7: <%= skill_form.label :skill %>
8: <%= skill_form.collection_select :skill_id, @skills, :id, :name, :prompt => "Select a > skill" %>
ここにコードの一部があります
<%= render 'shared/project_error_messages' %>
<%= project_form.label :title %>
<%= project_form.text_field :title %>
<%= project_form.label :category, "Category" %>
<%= project_form.select(:category, Project::CATEGORY_TYPES) %>
<%= project_form.label :description %>
<%= project_form.text_area :description %>
<%= project_form.label :goal_1, "Goal 1:" %>
<%= project_form.text_field :goal_1 %>
<h2>Your Team</h2>
<%= project_form.fields_for :team do |f| %>
<%= render 'teams/form', :team_form => f %>
<% end %>`
エラー レンダー コードは次のとおりです。
'<% if @project.errors.any? %>
<div id="error_explanation">
<div class="alert alert-error">
The form contains <%= pluralize(@project.errors.count, "error") %>.
</div>
<ul>
<% @project.errors.full_messages.each do |msg| %>
<li>* <%= msg %></li>
<% end %>
</ul>
</div>
<% end %>'
ロール フォームは、チームがプロジェクトにネストされるのと同じ方法で、チーム フォーム内にネストされます。私が理解した他のすべてのスレッドから、プロジェクトとそのすべての子モデル (チーム、ロール、role_skill_relationships) のエラーは @parent オブジェクトによってキャプチャされる必要があるということを理解しました。
ブラウザにエラーを無視させる構成設定または不足しているコードはありますか? 私の考えでは、エラーは @project にある可能性がありますが、このプロセスは中断されています。