Skip to content

Instantly share code, notes, and snippets.

@shamus
Last active December 17, 2015 02:39
Show Gist options
  • Save shamus/5537611 to your computer and use it in GitHub Desktop.
Save shamus/5537611 to your computer and use it in GitHub Desktop.
A strategy for loading page specific javascript

At the bottom of app/assets/javascripts/application.js.coffee.erb

page =
  ready: (initializer)->
    $(document).ready ->
      initializer(application.page)

window.<%= Rails.application.class.parent_name%> ?=
  page: page

Somewhere in app/helpers

def include_action_on_ready_script
  initializer_path = "#{controller.controller_path}/#{controller.action_name}.js"
  if Rails.application.assets.find_asset(initializer_path)
    javascript_include_tag asset_path(initializer_path)
  end
end

Somewhere in app/views/layouts

  = javascript_include_tag 'vendor', 'application'
  include_action_on_ready_script

Somewhere in app/assets/page_initialzers/:controller_path/:action_name

MyApp.page.ready ->
  # so much initialization
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment