Как отредактировать просмотр и отправить флеш-сообщение в rails3
В моем контроллере аккаунта я хотел бы отобразить (рендеринг, redirect_to?) вид редактирования после того, как изменения будут сохранены и отобразятся флэш-уведомления.
def update
@account = Account.find(params[:id])
respond_to do |format|
if @account.update_attributes(params[:account])
format.html { redirect_to(@account, :notice => 'Account was successfully updated.') }
else
format.html { render :action => "edit" }
end
end
end
Ответы
Ответ 1
По умолчанию вам нужно использовать отдельный оператор, например.
format.html {
flash[:notice] = 'message'
render :edit
}
В этом билете есть патч, позволяющий использовать render 'edit', :notice => 'message'
. Он не попал в Rails, но есть драгоценный камень, flash_render, который добавляет его.
Ответ 2
Вы можете использовать уведомления, например, в Rails 2:
flash[:notice] = "message"
Просто добавьте следующую строку в верхнюю часть вашего представления, чтобы отобразить ее:
<p id="notice"><%= flash[:notice] %></p>
И вы должны использовать метод render
, если вы не хотите, чтобы ваши пользователи снова заполняли формы редактирования.
Ответ 3
Если вы просто используете flash[:notice]
, это значение будет по-прежнему доступно в следующем запросе. Значит, вы увидите текст на следующих 2 страницах. Вместо этого используйте flash.now
, чтобы сделать только доступное значение в текущем запросе.
format.html {
flash.now[:notice] = 'message'
render :edit
}
Для справки прочитайте Обзор контроллера действий 5.2.1