1

我的 Rails 应用程序中有一些页面需要包含一些 javascript,最好是在</body>标记之前。没有必要在每个页面上都包含这个 javascript,因为大多数人不使用它。我找到了一种方法来完成这项工作,但我认为代码很糟糕。

您将如何做同样的事情,或者您将如何重构现有代码?

查看 gist.github.com 上的简化示例代码: https ://gist.github.com/scottswezey/ffc7bf52041b976b710a

(或参见下面的相同代码:)

application.html.erb(布局):

<!DOCTYPE html>
<html lang="en">
  <head>
  ...
  </head>

  <body>
    ...
    <script>
    $(function() {
      <%= yield(:js) %>
    });
  </script>
</body>
</html>

some_view_file.html.erb(视图):

<%
str = <<END_OF_STRING
$('.modal').modal()
END_OF_STRING

content_for :js do
  str.html_safe
end
%>
4

2 回答 2

1

永远不要这样做:JavaScript 不属于 HTML。只需在页面中放置适当的<script>标签,引用外部 JS 文件,如下所示:

应用程序.html.haml

!!!
%html
  %head
    = yield :javascript
  %body
    = yield

查看文件

- content_for :javascript do
  = javascript_include_tag 'modal'

应用程序/资产/modal.js

$(document).ready(function() {
  $('.modal').modal();
}

这使一切都很好地分开。

于 2014-06-03T18:20:16.337 回答
-1

是否可以在您的 JS 中添加 .js.erb 部分并将其呈现在正文下?

编辑:看看这个答案:https ://stackoverflow.com/a/10113547/1283742

于 2013-02-26T21:53:33.947 回答