Преимущество наличия всего в одном файле (application.js) состоит в том, что клиент кэширует этот файл и будет обслуживать их локально при последующих HTTP-запросах.
Удар производительности, который вы можете получить, связан с самим вашим кодом jQuery. В частности, при поиске элементов DOM, с которыми вы позже будете работать. Sizzle , новый механизм выбора в jQuery 1.3, анализирует ваши селекторы справа налево, как браузеры анализируют CSS. Поэтому лучше постараться максимально сузить свой выбор справа от запроса селектора. Сам jQuery оптимизирован также для селекторов #id (пропускает Sizzle), что хорошо иметь в виду. По этой причине выполнение $ ('# id'). Find ('div') намного быстрее, чем выполнение $ ('# id div'). Кроме этого, большинство предупреждений, относящихся к скорости страницы Google относительно селекторов CSS, будут применяться к вашим селекторам jQuery.
Что касается js для конкретной страницы, вот один из способов сделать это:
Добавьте <%= yield :javascripts %>
на свой макет, прямо перед закрывающим тегом тела. Затем вы можете добавить это к вашему виду после html:
<% content_for :javascripts do %>
<% javascript_tag do %>
//your js here
<% end %>
<% end %>
Это сохраняет HTTP-запрос и сохраняет поведение вашего представления близким к вашему, что является выигрышем, хотя и не уменьшает ваш javascript. Это компромисс, который хорошо сработал для меня.