問題
ビューでエラー メッセージ ブロックを再利用しようとしていました。
以下は、positions/_error_messages.html.erb に記述されたブロックです。
<% if @position.errors.any? %>
<div id="error_explanation">
<div class="alert alert-error">
The form contains <%= pluralize(@position.errors.count, "error") %>.
</div>
<ul>
<% @position.errors.full_messages.each do |msg| %>
<li>* <%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
問題は、@user、@clientなどの異なるオブジェクトで同じコードを繰り返すような、すべてのモデルで同様の部分ビューを作成する必要があることでした.
療法
共有フォルダー shared/_error_messages.html.erb に 1 つの erb を作成し、以下のコードを記述しました。
<% def error_message(active_object) %>
<% if active_object.errors.any? %>
<div id="error_explanation">
<div class="alert alert-error">
The form contains <%= pluralize(active_object.errors.count, "error") %>.
</div>
<ul>
<% active_object.errors.full_messages.each do |msg| %>
<li>* <%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<% end %>
そしてビューファイルで。positions/new.html.erb 以下のコードを書きました
<div id="errorbox">
<%= render "shared/error_messages" %>
<%= error_message(@position) %>
</div>
これは、すべての作成操作と更新操作で同じコードを使用できるようになったことを意味します。