如何从应用程序控制器更新导航栏元素?

问题描述 投票:0回答:1

这是我的第一个项目,在Rails中。我对模态很着迷,整个网站都是模态。我有一个引导导航栏,并且在导航栏中有一个链接,如果用户收到通知,我想自动更改其文本。在我的应用程序控制器中,我有一个:before_action

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

由于整个站点都是模态的,所以大多数视图都通过js.erb呈现为模态,该js.erb用相应的视图更新模态中的特定div。如果用户在模态中时收到通知,我希望导航栏链接文本发生更改,以便在他们隐藏模态时可见。

但是,我不知道该如何完成。我已将此代码添加到每个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 %>

我该怎么做?

jquery ruby-on-rails bootstrap-modal
1个回答
0
投票

我必须将此添加到每个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文件中更新该元素,则不起作用)。

我对此感觉很好-我不是开发人员,而且我已经尝试了一种方法,现在已经有好几天了,甚至可能是数周。

© www.soinside.com 2019 - 2024. All rights reserved.