да так можно сделать добавив javascript_include_tag params[:controller], но тогда в application.js нужно исключить все файлы которые вы хотите так подгружать. т.к. они все равно в итоге попадут в application.js вопрос только зачем это если удобнее иметь один файл со всем кодом на сайте (только один запрос к серверу и кеш браузера сделают открытие страниц более быстрым)
> Asset pipeline гордо заявляет, что теперь у каждого контроллера свой js-файл, причем при обращении к контроллеру подключается именно он.
Где это такое заявление? Подключается всегда все. Одним файлом. Следовательно он в кеше браузера и при переходах между страницами жс вообще не грузится.
лучше рабить контроллер на контроллеры :) а один экшн может работать хоть со всеми моделями. автоматически ничего не передается в экшн, вы сами решаете какие модели пользовать
github.com/slbug/testajax вот вам как пример. запустите потыкайте(а потом выключите жс в браузере и повторите). код конечно с кучей повторов и местами можно все упростить, но для того чтобы понять идею вам хватит.
ва находитесь на странице / (в рельсах допустим это welcome/index) жмете Cars (в шаблоне он допустим link_to 'Cars', cars_path, :remote => true # cars/index) идея AJAX запрос на cars/index. ответ показывается там где вам нужно. В итоге все то что нужно сделано, а вы все еще находитесь на странице /
если же вам нужно добавлять #! в урл, то добавьте обработчик события на ajax start (ну или куда вам удобнее) и там это делайте.
В любом случае даже если это будет один контроллер ничего не изменится. На разные форматы даем разные шаблоны. Тут будет только два косяка — аплоад файлов (жс вам в руки и развлекайтесь) и редиректы (опять же жс, который проверяет если пришел ответ что-то вроде {redirect: 'url'} то делаем редирект скриптами)