Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Rails.root + "app/assets/javascripts/pluggable/#{controller}/#{action}.js.coffee". Поэтому вы правы – в продакшн среде должна присутствовать строка: config.assets.precompile += %w(pluggable/*). Об этом написано в ридми джема. Не стал включать в статью, чтобы не перегружать информацией.javascript_include_tag('...') сделаем: javascript_tag "Post.index()"javascript_tag. А лишний запрос мне показался нестрашным.def javascript_pluggable_tag
controller = params[:controller]
action = define_pair_action
if File.exist?(Rails.root + "app/assets/javascripts/pluggable/#{controller}/#{action}.js.coffee")
javascript_include_tag "pluggable/#{controller}/#{action}"
end
end
def javascript_pluggable_call
controller = params[:controller]
action = define_pair_action
javascript_tag "#{ controller.camelize }.#{ action }()"
end
javascript_pluggable_tag only: %w(posts/new*)
javascript_pluggable_call except: %w(users/*)
def javascript_pluggable_tag
controller = params[:controller]
action = define_pair_action
if File.exist?(Rails.root + "app/assets/javascripts/pluggable/#{controller}/#{action}.js.coffee")
javascript_include_tag "pluggable/#{controller}/#{action}"
else
javascript_tag "#{controller.camelize}.#{action}();"
end
end
Но минус такого подхода в том, что скрипты, относящиеся определенному контроллеру, не находятся в одном месте (а значит тяжелее искать и разбираться). В довесок, если кусок кода большой, то мы теряем преимущества пайплайна.
Неясные аргументы, есть примеры?
"#{params[:controller]}.js.coffee". Часть из них общие, часть подключаемые. Так проще разобраться. Преимущества пайплайна очевидны, а голый javascript_include_tag делает дополнительный запрос на сервер. Это может отразиться на производительности, если кусок кода большой. В джеме просто вызывается функция, которая хранится в application.js.Может это дело вкуса, но мне показалось очень удобным, когда все скрипты находятся в "#{params[:controller]}.js.coffee".
Преимущества пайплайна очевидны, а голый javascript_include_tag делает дополнительный запрос на сервер. Это может отразиться на производительности, если кусок кода большой.
javascript_include_tag к config.assets.precompile. А дополнительный запрос будет в обоих случаях.javascript_include_tag никак не позволит вам хранить все в "#{params[:controller]}.js.coffee". Да, запрос будет в обоих случаях. Здесь вся соль в том, что вызывается функция из application.js а не скрипт из отдельного файла.
PluggableJs – простой и удобный способ подключения джаваскрипта на определенных страницах