Q:

CoffeeScript - How to work with coffeescript in ruby on rails?

I am working with CoffeeScript in Ruby on rails. And I am using http://js2.coffee/ to convert my javascript and jquery into CoffeeScript.
We know, Ruby on Rails provides us by default .coffee files when we create any controller.
In my view folder, I have defined a test.html.erb file, I have a button 
<button id="p">try</button>

and if I define the script for this button by using javascript or jquery in the same page i.e. test.html.erb it works.
My javascript code
document.getElementById("p").onclick = function() {myFunction()};
function myFunction() {
    alert("hello");
}

and my jquery
$(document).ready(function(){
    $("#p").click(function(){
        alert("hello");
    });
});

And now I have created a custom file in app/assets/javascripts/test.coffee 
coffeescript of my jquery code
$(document).ready ->
  $('#p').click ->
    alert 'hello'
    return
  return

and when I use this in my test.coffee it works fine.
coffeescript of javascript code
myFunction = ->
  alert 'hello'
  return

document.getElementById('p').onclick = ->
  myFunction()
  return

and when I use this code in my test.coffee it shows error in my console
Uncaught TypeError: Cannot set property 'onclick' of null

I have also try the test.js.coffee but still get the same error
so should I only use the coffeescript generated by jquery or is there any way to use the coffeescript generated by javascript?

A:

The problem is element_with_id "p" is not found on the page because coffeescript is being load before the page load. Wrap your code inside document.ready this will call the coffeescript once the page is completed loaded.
$(document).ready ->
  myFunction = ->
   alert 'hello'
   return

  document.getElementById('p').onclick = ->
    myFunction()
    return

