我的整个应用程序中只有一个页面需要jquery ui。如何在该单页中有条件地包含javascript文件?
我相信Rails 2我可以使用:(在application.html.erb中)
<%- if controller.controller_name == "posts" && controller.controller_action == "new" -%>
<%= stylesheet_link_tag 'jquery-ui-1.8.13.custom.css' %>
<%= javascript_include_tag 'jquery-ui-1.8.13.custom.min.js', 'autocomplete-rails.js' %>
<%- end -%>
但是controller.controller_action
会抛出一个未定义的方法错误。看完API后,看起来它已被删除了?
也许最好完全删除application.html.erb
中的条件并将其放在posts/new.html.erb
的顶部?
答案 0 :(得分:4)
我会避免将此责任委托给您的应用程序布局。如果您不需要在多个视图上使用jQuery UI,那么最好让视图处理它。下面让你这样做,同时仍然保持你的输出HTML干净和明智(即不要把JS全部放在这个地方)。
在您的布局(application.html.erb
)中:
<head>
<title>Foo Bar</title>
<%= yield :page_specific_assets %>
</head>
在您的视图中需要jQuery UI(posts/new.html.erb
):
<% content_for :page_specific_assets do %>
<%= stylesheet_link_tag 'jquery-ui-1.8.13.custom.css' %>
<%= javascript_include_tag 'jquery-ui-1.8.13.custom.min.js', 'autocomplete-rails.js' %>
<% end %>
注意:尽管惯例,但在<head>
中添加不必要的javascript会降低性能。
答案 1 :(得分:1)
我相信它是:
controller.action_name