gpt4 book ai didi

javascript - 渲染集合时避免使用多个 javascript_include_tag

转载 作者:行者123 更新时间:2023-11-30 16:54:26 24 4
gpt4 key购买 nike

我正在尝试以这种方式呈现一个集合

views/consumer/home/index.html.erb

<%= render @promotions %>

consumer/promotions/_promotion.html.erb

<% content_for :page_js_modules do %>
<%= javascript_include_tag 'consumer/carousels' %>
<% end %>

由于如果@promotions 中有多个促销事件,_promotion.html.erb 会呈现不止一次,因此 javascript 标签也会被多次包含并导致问题。

我只想将 javascript 标签放在促销 View 中以使其模块化,因此任何人都可以使用它而不必担心包含相关的 js 标签。

最佳答案

Since _promotion.html.erb is rendered more than once if there are more than one promotions in @promotions, the javascript tag also gets included more than once and causing issues.

这就是 partials 的用途,重用相同的代码。 您不能在局部中使用(您可以,但这不是一个好习惯)js 标记,因为它会继续在局部中为集合中的每条记录呈现内容。

I want to put the javascript tag inside of promotion view only so as to make it modular and hence anyone can use it without worrying about including the pertaining js tags.

我认为更好的方法是进行部分内部促销,其中包含您的 js 标记并呈现部分促销

#consumer/promotions/_promotion_with_js.html.erb
<% content_for :page_js_modules do %>
<%= javascript_include_tag 'consumer/carousels' %>
<% end %>
<%= render @promotions %>

如果在其他用例中您只想包含 js 而不是促销部分,那么您始终可以将其分离到另一个部分并使用它。

关于javascript - 渲染集合时避免使用多个 javascript_include_tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29959085/

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