gpt4 book ai didi

ruby-on-rails - 使用 rails 在每次加载后触发 javascript ajax partial

转载 作者:数据小太阳 更新时间:2023-10-29 08:56:47 25 4
gpt4 key购买 nike

我有一个菜单项可以触发 ajax,它返回 javascript 部分,这是一个引导模式。我遇到的问题是当用户第一次单击菜单项时,模式会按预期打开。用户关闭模态并尝试再次打开它,它没有打开(尽管 ajax 从后端再次触发)。

考虑以下代码(使用 bootstrap 4):

菜单.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 个模式之一。

再次感谢!

最佳答案

在尝试了一些东西之后,只需将 user_profile/show.js.erb 中的 replaceWith 替换为 html 就会导致 ajax每次开火。

旧的:

$("#user_profile").replaceWith("<%= j render "user_profile" %>");

新:

$("#user_profile").html("<%= j render "user_profile" %>");

这是因为 replaceWith 正在替换父元素中的元素,因此不会再次触发,因为该元素已经第一次被替换。

希望对 future 的任何人有所帮助!

关于ruby-on-rails - 使用 rails 在每次加载后触发 javascript ajax partial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52806409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com