Flash-сообщение Rails не отображается в redirect_to - PullRequest
7 голосов
/ 01 апреля 2012

В одном контроллере у меня есть

flash[:error] = "Message"
redirect_to :root

Корень: обрабатывается другим контроллером, представление имеет

<% if flash[:error] %>
  <p><%= flash[:error] %></p>
<% end %>

Но ничего не отображается.Я вставил <% = debug controller.session%>, вот что я получил

"flash"=>#<ActionDispatch::Flash::FlashHash:0x2e79208 @used=#<Set: {}>, @closed=false, @flashes={}, @now=nil>}

Что я сделал не так?

Ответы [ 3 ]

5 голосов
/ 01 апреля 2012

Проверьте, что вопрос stackoverFlow: Rails: redirect_to with: error, но flash [: error] пусто .

Как указано только в Rails API: alert и: alertпо умолчанию применяются как флэш-хэш-значения.Если вам нужно установить значение: error, вы можете сделать это так:

redirect_to show_path, :flash => { :error => "Insufficient rights!" }
4 голосов
/ 05 марта 2014

Я знаю, что уже поздно, но у меня была такая же проблема в Rails 4. Если вы используете хелпер _url в redirect_to, флеш-сообщение придет:

def update_post
    respond_to do |format|
        if @post.update(post_params)
            format.html { redirect_to show_post_meta_url, notice: 'Post was successfully updated.' }
        else
            format.html { render action: 'edit_post' }
        end
    end
end

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 30 июня 2015

Это то, как я отображаю предупреждения и уведомления в моем контроллере

redirect_to user_attachments_path, notice: "The file #{@attachment.name} has been uploaded."

Используйте flash[:error] или flash[:notice] при рендеринге поверх текущей страницы, а не при перенаправлении, как здесь:

if params[:attachment].nil?
      flash.now[:alert] = "No file found!"
      render "new"
else
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...