Я проводил исследования по этому поводу:
Использование Rails 3.1, где вы помещаете код javascript для своей страницы?
Но я еще не видел удовлетворительного ответа, что также заставляет меня задуматься, не делаю ли я что-то не так.
Вот моя ментальная модель: для разных взглядов у меня будут разные
$(document).ready(....)
блоки, которые явно ссылаются на элементы, которые очень специфичны для этой страницы. Я не хочу загрязнять ситуацию, загружая этот код для каждой отдельной страницы и каким-то образом пытаясь понять, как выполнять его только на определенных страницах; это кажется довольно некрасивым.
Моя интуиция, правда, не подкрепленная никакими предварительными экспериментами, состоит в том, что в идеале было бы:
- Загрузите код всего приложения из application.js.
- Загрузите код общего контроллера из чего-то вроде assets/имя_контроллера/shared.js
- Загрузите код, специфичный для представления, из чего-то вроде assets/имя_контроллера/show.js
С верхней части моей головы. Помощник при первом запуске проверит, существует ли файл, и, если да, выполнит для него javascript_include.
Возможно, это имеет некоторые проблемы с производительностью по сравнению с подходом «давайте просто завернем все это в большой липкий шар и отправим все это», но кажется лучшим подходом к разделению кода.
Однако, как и выше, у меня такое чувство, что я что-то упускаю. Является ли $(document).ready для каждой страницы плохой идеей? Должно ли это быть просто в шаблоне и вызывать специфичный для страницы бит JS из application.js? Связанная статья выше приходит к такому выводу, но мне не нравится образ, который я получаю в своей голове одного огромного $(document).ready, пронизанного, если это, если это, если другое.