Как добавить уведомление toastr JS на уровне приложения в Ruby on Rails - PullRequest
0 голосов
/ 29 мая 2020

Я использую гем toastr для своих уведомлений. Я пытаюсь добавить в свое приложение всплывающее уведомление всякий раз, когда активен метод на моем application_controller.rb.

rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized

    def user_not_authorized
      toastr.info('You cannot access this page.', 'info')
      redirect_to contacts_path
    end 

Как видите, я пытался добавить функцию toastr на свой контроллер, но это не сработало. Как я могу показывать это уведомление тостера всякий раз, когда срабатывает этот метод, или просто всякий раз, когда пользователь без прав администратора получает доступ к несанкционированной странице?

Ответы [ 2 ]

1 голос
/ 30 мая 2020

Чтобы опираться на первый ответ , я сделал это в своем приложении. Добавил то, что я хотел показать в flash в контроллере, а затем показать сообщения fla sh в toastr

Я использую отличное расширение slim там, добавьте его с помощью gem 'slim-rails' и сохраните этот файл как _messages.html.slim, затем вы можете включить его в свой файл макета.

- flash.each do |name, msg|
  javascript:
    window.onload = function() {  
      var name = "#{name}";

      if (name == 'info' || name == 'notice') {
        toastr.info("#{msg}");
      }
      else if (name == 'success') {      
        toastr.success("#{msg}");
      } 
      else if (name == 'error') {      
        toastr.error("#{msg}");
      } 
      else {
        toastr.info("#{msg}");
      }        
    };
0 голосов
/ 30 мая 2020

toastr - это библиотека Javascript, и вы не можете использовать ее в коде Ruby.

Однако, если вы хотите показывать пользователю какие-то уведомления и определять их в контекст контроллера Rails, вы можете использовать Rails Fla sh Уведомления .

В файле application_controller.rb:

rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized

def user_not_authorized
  flash[:notice] = "You cannot access this page."
  redirect_to contacts_path
end

И где-нибудь в вашем HTML / ERB, вы должны отобразить элементы HTML для каждого из уведомлений fla sh, установленных в контроллерах:

<html>
  <!-- <head/> -->
  <body>
    <% flash.each do |name, msg| -%>
      <%= content_tag :div, msg, class: name %>
    <% end -%>

    <!-- more content -->
  </body>
</html>

Вы можете ознакомиться с дополнительным примером его использования по ссылке выше .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...