Подтвердить что ты не робот

Как отредактировать просмотр и отправить флеш-сообщение в 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
4b9b3361

Ответ 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