Flash уведомление с redirect_to не работает в рельсах - PullRequest
6 голосов
/ 26 октября 2010

Я обновился до Rails 2.3.10, Rack 1.2.1, и теперь ни одно из моих флеш-сообщений не появляется.Я обнаружил, что во время перенаправления уведомление передается следующим образом

redirect_to(@user, :notice => "Sorry there was an error")

И, на мой взгляд, флэш-хэш пуст

<%= debug flash %>  
!map:ActionController::Flash::FlashHash {} 

Но вы можете увидеть сообщениеконтроллер. Что дает?

        <%= debug controller.session %>
        session{:home_zip=>"94108", :session_id=>"xxx", :flash=>{:notice=>"Sorry there was an error"}, :user_credentials=>"1baf9c9c0423ce0151ec32e24cc422f07309e4ba503eb4830635ecc115da217809997324374bb273b3fb792895c9741a8b8c9ea4267771a1bd149de5b9179ea0", :user_credentials_id=>22, :home_market_id=>11}
        Edit Profile    

Ответы [ 4 ]

4 голосов
/ 28 июля 2012

Код ниже должен работать:

redirect_to(@user, {:notice => "Sorry there was an error"})

Я предполагаю, что это связано с изменениями в Ruby, а не в Rails, потому что это похоже на изменение приоритета при разборе токена в компиляторе.

4 голосов
/ 26 октября 2010

Вы проверяли трекер ошибок рельсов? Я все еще пользуюсь старомодным сеттером flash[:notice] = message, и он работает нормально, поэтому, похоже, это проблема метода redirect_to.

https://rails.lighthouseapp.com/

Вы пробовали redirect_to url, :flash => { :notice => "notice" }, как обходной путь?

1 голос
/ 09 мая 2012

Это может быть проблема с куки.Короче говоря, куки не получаются, если вы сразу после этого перенаправляете.Предполагая, что Rails реализует flash с использованием куки, ваша проблема - редирект.

1 голос
/ 08 декабря 2010

Мы тоже столкнулись с этим. Все наши флеш-сообщения исчезают при перенаправлении, но не при явном указании в контроллере.

Не работает:

  def create
    if @obj.save
      flash[:notice] = "The #{cname.humanize.downcase} has been created."
      redirect_back_or_default redirect_url
    else
      render :action => 'new'
    end
  end

Это работает:

 def show
    @user = current_user
    flash[:notice] = "Hello -- this will show up fine"
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...