【发布时间】:2013-02-26 21:44:05
【问题描述】:
我的 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
%>
【问题讨论】:
-
不知道我是否理解您的问题,但是您可以在控制器的操作中设置一个变量(例如
@js_code),并在application.html.erb 中使用<% if @js_code %> <script> ...? -
我不是在尝试选择性地显示 js 代码,而是尝试将代码的 sn-ps 放入视图文件中,并使用 content_for 将它们包含在布局中。
标签: ruby-on-rails ruby refactoring