Rails 5闪存无法重定向

时间:2017-03-16 04:41:15

标签: ruby-on-rails flash-message

我创建了rails 5应用程序,我在控制器和视图中有以下代码来显示flash消息。我看到很多这样的问题,但我无法解决问题。

控制器端

    respond_to do |format|
      if @trigger.update(trigger_params)
        flash[:success] = 'Trigger was successfully updated.'
        format.html { redirect_to edit_project_trigger_path(@trigger, project_secret_key: @project.secret_key) }
        format.json { render :show, status: :ok, location: @trigger }
      else
        error = ''
        @trigger.errors.full_messages.each do |msg|
          error += "#{msg} <br>"
        end
        flash.now[:error] = error
        format.html { render :new }
        format.json { render json: @trigger.errors, status: :unprocessable_entity }
      end
    end

查看方

<% if flash[:error].present?%>
    <div class="alert alert-danger alert-message alert-message-common" role="alert">
      <%= flash[:error].html_safe %>
    </div>
<% end %>
<% if flash[:notice].present? %>
    <div class="alert alert-success alert-message alert-message-common" role="alert">
      <%= flash[:notice].html_safe %>
    </div>
<% end %>
<% if flash[:alert].present? %>
    <div class="alert alert-danger alert-message alert-message-common" role="alert">
      <%= flash[:alert].html_safe %>
    </div>
<% end %>
<% if flash[:success].present?%>
    <div class="alert alert-success alert-message alert-message-common" role="alert">
      <%= flash[:success].html_safe %>
    </div>
<% end %>

显示使用提醒但未显示成功消息。 rails 5中有任何问题或我的代码中有任何问题吗?

我希望警报工作,因为页面渲染和成功因为重定向而无效。

4 个答案:

答案 0 :(得分:0)

默认情况下仅支持alertnotice闪存键。

要添加success

class ApplicationController
  add_flash_types :successs

参考:Ruby Guides

答案 1 :(得分:-1)

试试这个:

format.html { redirect_to edit_project_trigger_path(@trigger, project_secret_key: @project.secret_key), :success => 'Trigger was successfully updated.' }

答案 2 :(得分:-1)

这应该有效:

format.html { redirect_to edit_project_trigger_path(@trigger, project_secret_key: @project.secret_key), flash: {success: 'Trigger was successfully updated.'} }

出于某些原因,您应该在 redirect_to 方法中注意警告键,但如果您需要成功或其他,您应该在 flash 键中使用嵌套哈希。

点击此处http://blog.remarkablelabs.com/2012/12/register-your-own-flash-types-rails-4-countdown-to-2013

答案 3 :(得分:-1)

redirect_to的Rails文档提到:“对于常用的闪存名称alertnotice以及通用闪存存储区,有两个特殊的访问器。”您需要对其他任何语法使用常规的flash语法。