rails-toastr:添加关闭按钮

时间:2017-03-10 16:33:31

标签: javascript css ruby-on-rails toast toastr

我使用rails-toastr gem(Rails 5.0.0.1),我想在烤面包机上添加一个关闭按钮。

我关注了instructions,并在toastr.css中添加了toastr.jsapplication.html.erb的链接。然后我分别在app/assets/stylesheetsapp/assets/javascripts下创建了两个文件,后者我添加了一行:

toastr.options.closeButton = true;

但是烤面包机不会出现。

我在application_helper.rb中使用此方法(我在application.html.erb中调用):

def custom_bootstrap_flash
  flash_messages = []
  flash.each do |type, message|
    type = 'success' if type == 'notice'
    type = 'error'   if type == 'alert'
    text = "<script>toastr.#{type}('#{message}');</script>"
    flash_messages << text.html_safe if message
  end
  flash_messages.join("\n").html_safe
end

但没有这两个资产,这样可以正常工作(但当然没有关闭按钮)。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

如果要在特定页面上使用其他选项,则将选项放置在application.js文件或特定js / coffee文件中。

application.js

...
//= require toastr

toastr.options = {
  "closeButton": true,
  "debug": false,
  "progressBar": true,
  "positionClass": "toast-top-right",
  "showDuration": "300",
  "hideDuration": "1000",
  "timeOut": "5000",
  "extendedTimeOut": "1000",
  "showEasing": "swing",
  "hideEasing": "linear",
  "showMethod": "fadeIn",
  "hideMethod": "fadeOut"
};

找到{@ 3}的烤面包机选项的完整列表。只需运行演示,就会有一个输出文件,显示您选择的选项。

答案 1 :(得分:0)

我不知道,但看起来CodeSeven/toastr已过时,不再维护。

我遇到了和你一样的问题,但我通过使用另一个toastr gem来解决这个问题,这个问题目前已经完全正常,可以看到&#34;&#34; toastr选项。我希望它能帮助你或任何其他会遇到这类问题的人。

答案 2 :(得分:0)

从不使用此方法,使用html_safe是一个安全问题,rubocop会抱怨您的代码,即:

app/helpers/application_helper.rb:10:30: C: Rails/OutputSafety: Tagging a string as html safe may be a security risk.
      flash_messages << text.html_safe if message

请按照以下步骤操作:

添加帮助:

module FooHelper
  def toastr_flash_class(type)
    case type
    when "alert"
      "toastr.error"
    when "notice"
      "toastr.success"
    else
      "toastr.info"
    end
  end
end

创建部分,例如_toaster.html.erb

<%= content_tag(:script) do %>
  <% flash.each do |type, message| %>
    <%= toastr_flash_class("#{type}") %>('<%= message %>')
  <% end %>
<% end %>

从您的布局或您的观点中调用您的部分:

<%= render 'layouts/shared/toastr' %>

答案 3 :(得分:0)

由于this Upwork freelancer,我们寻求了类似于Beengie's的解决方案。我们在arr = [3, 4, 5, 6, 3, 4, 5, 2, 3] def ans(list, temps, target) temps = [target[0]] if temps == [] if !target[1] list << temps elsif target[0] < target[1] ans(list, temps << target[1], target[1...target.size]) else ans(list << temps, [target[1]], target[1...target.size]) end end ans([], [], arr) 中添加了一个toastr_override.js文件,内容如下:

app/assets/javascripts/helpers/