Skip to main content

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

Javascript • Asked by theshashiverma
1d12da2ef259f22b7256ee5f502ee022

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?


Ce795239ba5dd2384fc2f88ffaff5451

One important note to make:

Rails 6 will be using Webpacker by default for Javascript, so it will probably be getting rid of coffeescript as well. You might want to just make the upgrade now if you can so you'll have an easier time upgrading to Rails 6.


Your error is saying the variable you called ".onclick" on was null. The variable was the result of your getElementById, so it's saying it can't find that element on the page. I'd check that out.

Your Coffeescript looks fine, so I'd double check your HTML and make sure it has something with id="p" in it.


Login or Create An Account to join the conversation.

Subscribe to the newsletter

Join 18,000+ developers who get early access to new screencasts, articles, guides, updates, and more.

By clicking this button, you agree to the GoRails Terms of Service and Privacy Policy.

More of a social being? We're also on Twitter and YouTube.