【发布时间】:2020-10-05 07:35:24
【问题描述】:
我在使用 Rails Turbolinks + Alpine JS 和 TailwindCSS drop-downs 时遇到问题。
问题是由于与“联系我们”页面上的 Hubspot 联系表单冲突。这是网站:
联系我们链接在页脚中,我链接到联系我们页面的方式是关闭 turbolink:
<%= link_to "Contact Us", contact_path, data: { turbolinks: false } %>
您可以直接通过bailoutwatch.org/contact 访问该页面,但请务必在第一次访问该页面时注意“Dropdown flash”。
如果我在链接到“联系我们”页面时没有关闭 turbolinks,那么 turbolinks 会破坏通过 javascript 加载的 Hubspot 表单,并且该表单是该页面的要求。
因为我在您第一次访问该网站时关闭了此“联系我们”页面的 turbolinks,所以它会触发使用 Alpine JS 的下拉菜单。这是一个快速的 Flash,一旦下拉列表被缓存在 turbolinks 中,它就不会再发生了,但是在访问“联系我们”页面时,如果没有该下拉列表,我无法找出加载所有这些 JS 要求的正确方法。
我应该如何在 Rails 中执行此操作,以便在访问“联系我们”页面时可以在站点的其余部分使用 turbolink,而不会破坏 Hubspot 表单或重新加载所有 javascript(导致下拉菜单闪烁)?
我正在通过我的标题加载 js,如下所示:
<%= javascript_pack_tag "application", "data-turbolinks-track": "reload" %>
然后,通过 webpack 加载 Alpine JS(它与 Yarn 一起安装)。然后通过页面正文中的内联 javascript 加载 Hubspot 表单。它看起来像这样(_hubspot_contact_form.html.erb):
<!--[if lte IE 8]>
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2-legacy.js"></script>
<![endif]-->
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js"></script>
<script>
hbspt.forms.create({
portalId: "HUBSPOT ACCOUNT NUMBER HERE",
formId: "90fb717a-6ce5-42e1-9e6d-aa1470042cbc"
});
</script>
这是我正在描述的“下拉闪光灯”的屏幕截图。
【问题讨论】:
标签: javascript ruby-on-rails webpack turbolinks alpine.js