Как я понимаю, вы хотите, чтобы некоторые значения были доступны вашему новому методу или странице, которая отображается после сбоя при создании.
Я полагаю, у вас должен быть блок response_to в вашем методе create. И вы делаете это:
def create
...
respond_to do |format|
if @patient.save
format.html { redirect_to @object, :notice => "Object was successfully saved." }
format.xml { render :xml => @object, :status => :created, :location => @object }
else
format.html { render :action => :new }
format.xml { render :xml => @patient.errors, :status => :unprocessable_entity }
end
end
end
Как вы можете заметить, в части else новое действие только что выполнено. Используя некоторый шаблон, представление только что доставлено. Теперь вам просто нужно сделать все, что вы делаете в новом действии, чтобы сделать эти значения доступными, в части else .
def create
...
respond_to do |format|
if @patient.save
format.html { redirect_to @object, :notice => "Object was successfully saved." }
format.xml { render :xml => @object, :status => :created, :location => @object }
else
format.html {
@memberships = []
ListCache.my_registration_types.each do |my_registration_type|
@memberships << MyRegistrationTypeMembership.find_or_initialize_by_my_id_and_my_registration_type_id( @my.id, my_registration_type.id )
end
render :action => :new
}
format.xml { render :xml => @patient.errors, :status => :unprocessable_entity }
end
end
end
И требуемые значения будут доступны в отображаемой форме.
Лучше, вы переходите к этому коду к фильтру перед или к чему-то, что делает эти значения доступными для этих двух методов (new и create).