我的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
%>
答案 0 :(得分:0)
不要这样做:JavaScript不属于HTML。只需在页面中放置一个适当的<script>
标记,引用外部JS文件,如下所示:
application.html.haml
!!!
%html
%head
= yield :javascript
%body
= yield
查看文件
- content_for :javascript do
= javascript_include_tag 'modal'
应用程序/资产/ modal.js
$(document).ready(function() {
$('.modal').modal();
}
这使得一切都很好地分开。
答案 1 :(得分:-1)
是否可以在JS中添加.js.erb部分并将其渲染到正文下?