Несколько вариантов, которые немного чище, чем то, что вы делаете:
1) Есть один макет для каждой комбинации CSS/js, который вам понадобится, и укажите соответствующий макет в действии. Это действительно имеет смысл, если у вас есть группы действий, которые будут использовать один и тот же css/js, иначе у вас будет один макет для каждого действия, что является беспорядком.
2) Это почти то же самое, что и вы, но немного более многоразовое - установите переменную в своем действии, такую как @include_toggles = true
, а затем включите «jquery-toggles», только если эта переменная истинна. Затем вы можете повторно использовать эту переменную в других действиях, для которых нужны jquery-toggles, без необходимости проверять конкретные имена действий и контроллеров.
3) Если каждое действие имеет свой собственный css/js, не используемый другими действиями, вы можете упорядочить свои файлы внутри каталога с именем действия. Затем вы можете включить все файлы в этот каталог, как описано здесь https://stackoverflow.com/a/8902949/1786750, интерполируя имя текущего действия в пути, чтобы вы получили только файлы, необходимые для текущего действия. Таким образом, для индекса:
<%= javascript_include_tag Dir[Rails.root.join("public/javascripts/views/#{action_name}/*.js")].map { |s| s.sub(Rails.root.join("public/javascripts/").to_s, "") } %>
(Этот код прокатывается из приведенного выше ответа, я просто добавил #{action_name}
для иллюстрации концепции.)
Надежда, что помогает. Могут быть даже лучшие варианты, но выше, по крайней мере, простые и относительно чистые.
Один из распространенных способов решения * слишком большого количества запросов * заключается в том, чтобы поместить все источники в один большой файл и минимизировать это, как часть вашего процесса сборки. Но это может быть не так, как вы хотите. – Yogu