В скаффолдинговом Rails 3, когда не удается сохранить метод update, логика уже существует для перенаправления обратно на страницу редактирования.
мы модифицировали метод scaffolded для выполнения некоторой пользовательской логики проверки (после обновления, но до того, как мы отобразим результирующее представление
respond_to do |format|
if @thingy.update_attributes(params[:thingy])
if @thingy.found_warning_101
WHAT GOES "HERE" TO REDIRECT TO EDIT PAGE
AND HAVE THE DEFAULT SCAFFOLDING ERROR HANDLING SHOW "WARNING 101"?
THIS DOES NOT WORK, GIVES MISSING VIEW ERROR, DOESNT FIND EDIT VIEW:
format.html { render :action => "edit", :notice => "WARNING 101" }
format.xml { render :xml => @things.errors, :status => :unprocessable_entity }
return
end
format.html { redirect_to(@thingy, :notice => "thingy was successfully updated.") }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @beep.errors, :status => :unprocessable_entity }
end
Мы попытались (выше) просто скопировать тот же код, который создает скаффолдинг для случая, когда .update_attributes завершается неудачно (с последующим возвратом), но мы получаем ошибку отсутствия представления:
Missing template thingys/update with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml, :haml, :voice], :formats=>[:html], :locale=>[:en, :en]} in view paths