Как отредактировать вид редактирования и опубликовать флеш-сообщение в rails3 - PullRequest
31 голосов
/ 23 января 2011

В моем контроллере учетной записи я хотел бы отобразить (render, 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

Ответы [ 3 ]

43 голосов
/ 24 января 2011

По умолчанию вы должны использовать отдельный оператор, например,

format.html { 
  flash[:notice] = 'message'
  render :edit
}

Этот билет содержит патч, позволяющий использовать render 'edit', :notice => 'message'.Он не попал в Rails, но есть гем, flash_render , который добавляет его.

10 голосов
/ 07 сентября 2015

Если вы просто используете flash[:notice], это значение все равно будет доступно в следующем запросе. Это означает, что вы увидите текст на следующих 2 страницах. Вместо этого используйте flash.now, чтобы сделать значение доступным только в текущем запросе.

format.html { 
  flash.now[:notice] = 'message'
  render :edit
}

Для справки прочитайте Обзор контроллера действий 5.2.1

10 голосов
/ 23 января 2011

Вы все еще можете использовать уведомления, как в Rails 2:

flash[:notice] = "message"

Просто добавьте следующую строку в верхней части вашего представления, чтобы отобразить его:

<p id="notice"><%= flash[:notice] %></p>

И вам следует использовать метод render, если вы не хотите, чтобы ваши пользователи снова заполняли формы редактирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...