это потому, что вы передаете переменную object
в свой партиал, но в партиале вы пытаетесь использовать переменную с именем @user
.Измените каждый экземпляр @user
в этом частичном на object
, и он будет работать нормально.
1:<% if object.errors.any? %>
2:<div id="error_explanation">
3:<h2><%= pluralize(object.errors.count, "error") %>
4:prohibited this <%= object.class.to_s.underscore.humanize.downcase %>
ОБНОВЛЕНИЕ: Просто чтобы прояснить, ответы выше предполагают, что есть ошибка сустановка переменной @user, но это нормально.Когда вы говорите :object => f.object
в своем вызове рендеринга, вы говорите render
взять объект, на котором основана эта форма, и отправить его частично - с именем переменной object
.
Весь смысл рефакторинга кода ошибки в разделяемую частичку заключается в том, что он будет использоваться несколькими формами для разных моделей.Внутри партиала вы не можете сказать @user
, потому что вы будете использовать этот же партиал для всех остальных ваших моделей.Вот почему код в части изменен для использования более общего имени переменной, object
.