Как обновить элемент navbar из контроллера приложения? - PullRequest
0 голосов
/ 01 апреля 2020

Это мой первый проект, он в Rails. Я сходил с ума от модалов, весь сайт - модалы. У меня есть bootstrap навигационная панель, и в навигационной панели есть ссылка, текст которой я хочу автоматически изменить, если пользователь получит уведомление. В контроллере моего приложения у меня есть: before_action

 @notifications = Notification.where(recipient: current_fan).unread

Поскольку весь сайт является модальным, большинство представлений преобразуется в модальное с помощью js .erb, который обновляет конкретный div в модальном с соответствующим видом. Если пользователь получает уведомление, когда он находится внутри модального окна, я хочу, чтобы текст ссылки на панели навигации изменился, чтобы он был виден, когда он скрывает модальное окно.

Однако я не знаю, как это сделать sh это. Я добавил этот код вверху каждого файла js .erb, в надежде, что он изменит навигационную панель #notification_link, поэтому новый текст ссылки виден, когда модальный скрыт, но это не так.

<% if @notifications.any? %>
  $("#notification_link").html('<%= link_to "NEW NOTIFICATION", notification_nmodal_index_path, "data-toggle"=>"modal", "data-target"=>"#actionModal", "id"=>"notoLink", remote: true %>')
<% end %>

Как я могу это сделать?

1 Ответ

0 голосов
/ 01 апреля 2020

Я должен был добавить это в начало каждого js .erb файла:

<% if @notifications.any? %>
  $("#navbar_notification_link").html("<%= j render 'notifications/new_notification' %>")
<% end %>

и в _new_notification я положил

<%= link_to "NEW NOTIFICATION", notification_nmodal_index_path, "data-toggle"=>"modal", "data-target"=>"#actionModal", "id"=>"notoLink", remote: true %>

, так что теперь, если пользователь что-то делает в модальном режиме, когда приходит уведомление, добавляется новый текст ссылки, когда пользователь скрывает модальное. Обновление элемента navbar работало только в том случае, если я отображал в нем представление (оно не работало, если я пытался обновить элемент непосредственно из файла js .erb).

Я чувствую себя довольно хорошо - я не разработчик, и я пытался придумать способ сделать это в течение нескольких дней, возможно, даже недель.

...