2011-06-04 31 views
1

我只有一個頁面,需要我的整個應用程序中的jQuery UI。如何有條件地將JavaScript文件包含在單個頁面中?如何僅在一個控制器動作中包含代碼?

我相信梁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的頂部?

回答

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 %> 

注:儘管按慣例,把不必要的JavaScript在<head>降低性能。

1

我相信這是:

controller.action_name 
相關問題