闪存消息不显示rails

时间:2018-02-16 01:41:49

标签: ruby-on-rails

我正在尝试在重定向上显示Flash消息,但在显示它时遇到一些麻烦。

我想要发生的是在保存电子邮件后我们会显示一条消息。以下是我试图这样做的几种不同方式。

控制器设置 - 我尝试使用以下方法中显示的两种不同方式设置闪光灯。 puts声明正在被击中。

  def subscriber_email_landing_page
    email = Email.create(email: subscriber_email_params[:email], subscriber_type: 'mtb-landing-page')

    if email.save
      puts 'hit flash'
      flash[:notice] = "Post has been saved successfully."
      redirect_to mountain_bike_path, flash: { notice: 'hey'}
    end
  end

不同的方式我试图在视图中显示闪光灯:

  <%= flash[:notice] %>

  <% flash.each do |key, value| %>
    <%= content_tag :div, value, class: "flash #{key}" %>
  <% end %>

  <% if !flash.empty? %>
    <% puts 'flash working' %>
    <p>hey how are ya</p>
  <% end %>

我觉得我有一些明显缺失的东西。有人可以提供一些经验丰富的铁路建议吗?

1 个答案:

答案 0 :(得分:0)

这就是我目前在Rails应用程序中设置闪存的方法

在app / helpers / application_helper.rb

module ApplicationHelper

      # bootstrap flash notifications
      def flash_class(level)
        case level
          when 'notice' then "alert alert-info"
          when 'success' then "alert alert-success"
          when 'error' then "alert alert-danger"
          when 'alert' then "alert alert-warning"
        end
      end

    end

在app / views / shared / _flash.html.erb

<% flash.each do |key, value| %>
      <div class="<%= flash_class(key) %>">
            <%= value %>
      </div>
<% end %>

在控制器中调用flash的示例

def require_user_signin
  unless current_user
    # stores url in the session that the user was trying to go to before being redirected
    session[:intended_url] = request.url
    redirect_to new_session_url 
    flash[:error] = "please sign in first!"
  end    
end

def create
  @user = User.new(user_params)   
  if @user.save
    session[:user_id] = @user.id # creates session to login user
    flash[:success] = "Hi #{@user.first_name.capitalize}, thanks for creating an account!"
    redirect_to user_url(@user.id)
  else
    render 'new'
  end
end

在视图中

<%= form_for(@job) do |f| %>

  <%= render 'shared/flash' %>
  <%= render 'shared/errors', object: @job %>

可能也希望对此参考https://www.railstutorial.org/book/_single-page#sec-the_flash

进行检查