我有一个菜单项,它触发了返回javascript partial的ajax,这是一个引导模式。我遇到的问题是,当用户第一次单击菜单项时,模式会按预期打开。用户关闭模式并尝试再次打开它,它没有打开(尽管ajax从后端再次触发)。
考虑以下代码(使用bootstrap 4):
Menu.html.erb:
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownMenuLink">
<%= link_to user_profile_path(current_user.user_profile.id), remote: true, class: "dropdown-item" do %>
<%= fa_icon "id-card", text: "Profile Settings" %>
<% end %>
</div>
...
<div id="user_profile"></div>
user_profile/show.js.erb (ajax js部分):
$("#user_profile").replaceWith("<%= j render "user_profile" %>");
user_profile/_user_profile.html.erb (引导模式):
<script>
$('#user_profile_modal').modal('show');
</script>
<%= form_with model: @user_profile do |f| %>
<div class="modal fade" id="user_profile_modal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
...
</div>
</div>
<% end %>
是否有一种方法可以在每次从后端触发模式时都触发modal('show');
?顺便说一句,这只是以这种方式加载到页面上的3个模态之一。
再次感谢!
发布于 2018-10-15 04:08:04
在尝试了几种方法之后,在user_profile/show.js.erb
中简单地将replaceWith
替换为html
将导致每次都触发ajax。
旧的:
$("#user_profile").replaceWith("<%= j render "user_profile" %>");
新的:
$("#user_profile").html("<%= j render "user_profile" %>");
这样做的原因是因为replaceWith
正在替换父元素中的元素,因此不会再次触发,因为该元素已经被第一次替换。
希望这对未来的任何人都有帮助!
https://stackoverflow.com/questions/52806409
复制相似问题