Ruby on rails 在Rails的多个html.erb文件中包含相同的js文件
一个html.erb中包含的javascript文件是否即使在另一个具有不同url的视图中也是持久的?例如:假设流程是,如果我在new中单击Go按钮,那么用户被引导到show页面,并且我只在new.html.erb中包含js文件,那么js文件在show中也可用吗 new.html.erb _first_partial.html.erb _second_partial.html.erbRuby on rails 在Rails的多个html.erb文件中包含相同的js文件,ruby-on-rails,Ruby On Rails,一个html.erb中包含的javascript文件是否即使在另一个具有不同url的视图中也是持久的?例如:假设流程是,如果我在new中单击Go按钮,那么用户被引导到show页面,并且我只在new.html.erb中包含js文件,那么js文件在show中也可用吗 new.html.erb _first_partial.html.erb _second_partial.html.erb 在这里,对于if和elsif条件,我只渲染其中一个部分,这样我就可以在任何部分中包含js文件,但是对于第三个el
在这里,对于if和elsif条件,我只渲染其中一个部分,这样我就可以在任何部分中包含js文件,但是对于第三个else条件,由于两个部分都已渲染,那么包含js文件的最佳方式是什么?而且我不能在main中包含js文件,因为js文件是在呈现部分中的html之后调用的。不,通常javascript代码在其他视图中不可用,只在包含它的视图中可用。所以你需要再次包含它 例外情况是,如果您将它放在布局文件(如application.html.erb)中,因为它将在所有视图中呈现 如果在两个部分中都调用javascript包,那么也可以在If语句之后在main中调用它。这将在部分加载后加载。在一个文件中需要一段javascript,而这个文件似乎没有JS文件中使用的html元素,这可能看起来很奇怪,但是,片段只是在rails中组织代码的一种方式。最后,它们将合并成一个大的html文件 在您的评论中,您说这个if语句嵌套在另一个if语句中,所以您可能根本不需要javascript?将其粘贴到if语句的末尾,如下所示
<% if outer_if_statment %>
<% if some_condition %>
<% render partial: 'first_partial' %>
<% elsif some_other_condition %>
<% render partial: 'second_partial' %>
<% else %>
<% render partial: 'first_partial' %>
<% render partial: 'second_partial' %>
<% end %>
<%= javascript_include_tag 'common' %>
<% else %>
...
<% end %>
在视图中,您可以这样称呼它:
<%= content_for :after_js do %>
<%= javascript_include_tag 'common' %>
<% end %>
谢谢你的回答。我已经编辑了我的问题。请把问题通读一遍。您的回答对于我的问题的上一个版本是正确的,但是我的编辑上载得太晚了。所以你已经回答了上一个版本。我编辑了我的答案-为什么你认为你不能在主文件中加载它?主文件还有其他代码。我只为这个问题粘贴了必要的内容。问题中的if条件位于另一个if块内。因此,当主文件中的其他条件不满足时,js文件是不必要的。所以我不包括它,而且js只在那些部分中的html元素上有函数。基本上我想问的是,如果同一个父html.erb文件中的两个部分或者父html.erb文件中的一个部分需要相同的js文件,那么包含js文件的最佳方式是什么。我想我的问题并不完全清楚。我得到了一个问题:答案是,你可以把它放在主文件中,即使这看起来有点奇怪。但请记住,部分内容将全部合并到一个大的html文件中。我会更新我的answer@Clara我已经打开了另一个问题,在这里我已经更清楚地提出了疑问——请也检查一下这个问题。
#some code
<%= javascript_include_tag 'common' %>
#some code
<%= javascript_include_tag 'common' %>
<% if outer_if_statment %>
<% if some_condition %>
<% render partial: 'first_partial' %>
<% elsif some_other_condition %>
<% render partial: 'second_partial' %>
<% else %>
<% render partial: 'first_partial' %>
<% render partial: 'second_partial' %>
<% end %>
<%= javascript_include_tag 'common' %>
<% else %>
...
<% end %>
<body>
<%= yield %>
<%= javascript_include_tag 'application' %>
<%= javascript_pack_tag 'application' %>
<%= yield(:after_js) %>
</body>
<%= content_for :after_js do %>
<%= javascript_include_tag 'common' %>
<% end %>
// common.js
const button = document.querySelector("#red-button")
if (button) {
button.addEventListener(...)
}