Как добавить камень toastr-rails в проект Rails 6? - PullRequest
2 голосов
/ 09 ноября 2019

Я пытаюсь добавить камень toastr в мой проект Rails 6. У меня также есть установленный драгоценный камень.

Я не понимаю webpacker и как сделать toastr-rails дружественным к webpacker.

Я прочитал всю документацию. Не говорите мне, чтобы прочитать документацию.

Это то, что я пробовал

yarn add toastr

Затем в своем файле assets / packs / application.js я добавил

@import 'toastr'

И в свой файл assets / stylesheets / application.scss я добавил

*= require_toastr

Наконец, мой layouts / application.html.erb имеет этот код

<!DOCTYPE html>
<html>
 <head>
 </head>
 <body>
  <% unless flash.empty? %>
    <script type="text/javascript">
        <% flash.each do |f| %>
        <% type = f[0].to_s %>
        toastr['<%= type %>']('<%= f[1] %>');
        <% end %>
    </script>
  <% end %>
  <%= yield %>
 </body>
</html>```


I don't get the toast notifications. 
I don't get any notifications. 
But this code works on my Rails 4 project.

1 Ответ

0 голосов
/ 09 ноября 2019

Если вы хотите добавить toastr с самоцветом toastr-rails, используйте конвейер ресурсов вместо веб-пакета.

Вот шаги для добавления toastr с webpack.

  1. Добавить toastr js с пряжей

    yarn add toastr
    
  2. Требуется toastr в app / javascript / packs / application.js . Я добавил его в глобальный, чтобы избежать ошибок

    global.toastr = require("toastr")
    
  3. Создать файл app / javascript / stylesheets / application.scss для импорта пользовательских или библиотечных CSS-файлов

  4. Импорт toastr css в app / javascript / stylesheets / application.scss

    @import 'toastr'
    
  5. Импорт app /javascript / stylesheets / application.scss файл в app / javascript / packs / application.js

    import "../stylesheets/application"
    
  6. Я написал вспомогательный метод для сообщений Flash,Добавьте этот метод к application_helper.rb или другому помощнику

    def toastr_flash
      flash.each_with_object([]) do |(type, message), flash_messages|
        type = 'success' if type == 'notice'
        type = 'error' if type == 'alert'
        text = "<script>toastr.#{type}('#{message}', '', { closeButton: true, progressBar: true })</script>"
        flash_messages << text.html_safe if message
      end.join("\n").html_safe
    end
    
  7. Добавьте метод toastr_flash в layouts / application.html.erb или где вы хотите

    <!DOCTYPE html>
    <html>
      <head>
      </head>
      <body>
        <%= yield %>
        <%= toastr_flash %>
      </body>
    </html>
    
...