gpt4 book ai didi

javascript - 在 ruby​​ on rails 4 元素中实现页面特定的 java 脚本和 CSS

转载 作者:行者123 更新时间:2023-11-28 05:45:29 25 4
gpt4 key购买 nike

我的元素有两个页面,每个页面都有不同的 javascript 和 CSS。我也是 ruby​​ on rails 的新手,我有点了解 Assets 管道,但并不完全了解。到目前为止,我已经尝试过一些没有奏效的事情。

首先是在它自己的文件中创建 javascript,然后在我希望加载 javascript 的 .html.erb 文件中,我在 <head> 之间创建了一个 javascript 链接标记。标签。与此同时,我将它们预编译到 production.rb 文件中。这没有用,看起来它们仍然在两个 javascript 文件之间重叠。

我尝试的下一个解决方案是实现 jquery-readyselector plugin .这涉及像这样在 application.html.erb 中的 body 上创建一个类

<body class="<%= controller_name %> <%= action_name %>">
<%= yield %>
</body>`

然后您可以在 application.js 中包含现成的选择器,最后您可以将 javascript 的范围限定到该 javascript/coffeescript 文件中的页面。

// app/assets/javascripts/alert.js.coffee

$(".pages.contact").ready ->
alert "My example alert box."

这个解决方案也没有用。我不知道我做错了什么,这可能是我忽略的简单事情,因为我是一个 Rails 菜鸟。我想知道是否有人可以给我一些关于另一种方法的指导,以允许在我的 ruby​​ on rails 元素中使用特定于页面的 javascript 和 CSS。

在我的应用程序下面。{js|css} 文件

application.js
//= require jquery
//= require jquery_ujs
//= require moment
//= require bootstrap-datetimepicker
//= require template
//= require form

application.css
*= require_self
*= require bootstrap-datetimepicker
*= require template
*= requre form
*= require_tree .

最佳答案

有几种不同的方法可以解决这个问题。

默认情况下,在 Rails 元素中,您的 application.js 将包含在内。

如果您刚刚开始您的元素,您可能会看到它被包含在 app/views/layouts/application.html.erb 中,使用类似 javascript_include_tag 'application'

根据您的页面特定文件有多少 JS,您可以只在 application.js 中要求它,但如果您想提供完全不同的 JS,您可以在上面提到的布局文件中执行类似的操作:

<% if content_for?(:page_script_tags) %>
<%= yield(:page_script_tags) %>
<% else %>
<%= javascript_include_tag('application') %>
<% end %>

然后在您想要自定义 JS 的任何页面的 HTML 中,您可以执行以下操作:

<% content_for(:page_script_tags, javascript_include_tag('path/to/your/js/file.js') %>

如果您只是想更改您的 JS 以便它仅在特定页面上执行,您可以将您的 JS 更新为:

jQuery ->
if ($(".pages.contact").length)
alert "My example alert box."

让我知道这是否有意义!

关于javascript - 在 ruby​​ on rails 4 元素中实现页面特定的 java 脚本和 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37634776/

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