Rails: когда «флэш» хеш становится пустым? - PullRequest
5 голосов
/ 31 января 2011

На index странице MyController Я установил значение flash[:notice]:

class MyController < ApplicationController
  def index
    flash[:notice] = "my message"
    ...
  end
end

Я вижу "my message", отображаемое как ожидалось.

Однако, когда я нажимаю на этой странице ссылку, которая указывает на index страницу MyOtherController, я все равно вижу "my message":

class MyOtherController < ApplicationController
  def index
    puts "----------------------------------------"
    puts flash[:notice]    # => "my message"
    puts "----------------------------------------"
  end
end

Я думал, что flash[:notice] становится пустым с каждым запросом, но здесь это не так. Как правильно опустошить flash[:notice]?

Ответы [ 2 ]

8 голосов
/ 31 января 2011

вы можете использовать вместо flash.now[:notice] = .... flash.now полезно, если вы не хотите, чтобы флэш-сообщение сохранялось до следующего запроса. Часто redirect_to следует за flash[:notice] = ..., поэтому оно сохраняется для одного запроса

3 голосов
/ 31 января 2011

В большинстве случаев это правило должно быть правильным:

Использовать flash[:notice] с redirect

Использовать flash.now[:notice] с render

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