Как включить код только в одно действие контроллера? - PullRequest
1 голос
/ 05 июня 2011

У меня есть только одна страница, которая требует 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?

Ответы [ 2 ]

4 голосов
/ 05 июня 2011

Я бы не стал передавать ответственность за это вашему макету приложения.Если вам не нужен jQuery UI для более чем одного представления, лучше всего позволить представлению справиться с этим.Следующее позволяет вам сделать это, сохраняя при этом ваш выходной HTML чистым и понятным (т. Е. Не помещать JS повсюду, невольно).

В вашем макете (application.html.erb):

<head>
  <title>Foo Bar</title>
  <%= yield :page_specific_assets %>
</head>

По вашему мнению, для этого требуется пользовательский интерфейс jQuery (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 голос
/ 05 июня 2011

Я считаю, что это:

controller.action_name
...