Rails会增加flash [:error]消息的持续时间

时间:2017-06-06 05:41:58

标签: ruby-on-rails

在Rails 4应用程序中增加单个flash [:error]消息的显示持续时间最简单/最好的方法是什么?

执行消息的代码位于控制器中,相关部分如下所示:

  else
    flash[:notice] = t(:no_new_media, source: @channel.external_source.capitalize)
    flash[:error] = @error['message'] if @error.present?
    redirect_to admin_channel_path(@channel)
  end

我想增加错误消息的显示持续时间,但我不关心通知

2 个答案:

答案 0 :(得分:0)

我认为您应该创建一个新的自定义Flash消息类型。更多细节here

# app/controllers/application_controller.rb
class ApplicationController
    ...
  add_flash_types :error, :another_custom_type
end

# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def create
    ...
    redirect_to home_path,
      another_custom_type: "An error message for the user"
  end
end

现在在您的视图中检查flash[:another_custom_type].present?并在此基础上设置消息的持续时间。

答案 1 :(得分:0)

我不确定,但您可以尝试这样: reference

$('document').ready(function() {
  setTimeout(function() {
    $('#test').slideUp();
  }, 5000);
});

我认为带有flash消息的HTML元素的id是#test,这将在5000毫秒(5秒)后隐藏它。

app/assets/javascripts/application.js.coffee

$ ->
  flashCallback = ->
    $(".flash-message").fadeOut()
  $(".flash-message").bind 'click', (ev) =>
    $(".flash-message").fadeOut()
  setTimeout flashCallback, 3000

希望这会对你有所帮助。