Actually you are rendering _form
view, but without sending it to output (take a look at third param), and then you are rendering update
view... The flash message has been rendered once in _form
, so it won't be rendered again.
You should simply try this :
if(Yii::app()->request->isAjaxRequest) {
$this->renderPartial('_form', array('campaign'=>$campaign), false, true);
Yii::app()->end();
} else {
$this->redirect(array('update','id'=>$campaign->id));
}