首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Clearance不显示闪烁消息(Ruby on Rails 5.0.1)

在Ruby on Rails 5.0.1中,如果你想要在Clearance gem中禁用闪烁消息(flash messages),你可以通过以下几种方法来实现:

方法一:在控制器中禁用闪烁消息

你可以在控制器中检查是否需要显示闪烁消息,并根据条件决定是否添加到flash中。

代码语言:javascript
复制
class ApplicationController < ActionController::Base
  before_action :set_flash_messages

  private

  def set_flash_messages
    flash.discard(:notice) if flash[:notice].blank?
    flash.discard(:alert) if flash[:alert].blank?
  end
end

方法二:在视图中禁用闪烁消息

你可以在视图中检查是否有闪烁消息,并根据条件决定是否显示。

代码语言:javascript
复制
<% if flash[:notice].present? %>
  <div class="alert alert-success">
    <%= flash[:notice] %>
  </div>
<% end %>

<% if flash[:alert].present? %>
  <div class="alert alert-danger">
    <%= flash[:alert] %>
  </div>
<% end %>

方法三:在Clearance配置中禁用闪烁消息

你可以在Clearance的配置文件中禁用闪烁消息。编辑config/initializers/clearance.rb文件,添加以下代码:

代码语言:javascript
复制
Clearance.configure do |config|
  # 其他配置...

  config.middleware.use Clearance::Middleware, raise_on_unauthorized: false do |env|
    request = Rack::Request.new(env)
    if Clearance.configuration.allow_sign_in_without_confirmation?
      env['clearance.flash'] = nil
    end
  end
end

方法四:在路由中禁用闪烁消息

你可以在路由中检查是否有闪烁消息,并根据条件决定是否显示。

代码语言:javascript
复制
Rails.application.routes.draw do
  resources :sessions, only: [:new, :create, :destroy] do
    get 'success', on: :collection, to: 'sessions#success'
  end
end

然后在SessionsController中:

代码语言:javascript
复制
class SessionsController < ApplicationController
  def success
    flash[:notice] = 'You have successfully signed in.'
    redirect_to root_url
  end
end

通过以上方法,你可以根据需要在Ruby on Rails 5.0.1中禁用Clearance gem的闪烁消息。选择适合你项目需求的方法进行实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券