I am trying to add custom JS to my Rails 7 project. I followed the instructions on this StackOverflow answer.
But I'm still not able to use custom JS in my view.
Here is my main.js:
function sayHi() {
console.log("hi");
}
window.sayHi = sayHi;
Here is my view (index.html.erb):
<div>
<button type="button" onclick="sayHi()">Click Me!</button>
</div>
When I click the button, in the console it just says:
Uncaught ReferenceError: sayHi is not defined
I'm really not sure how to access the custom JS from my view.
Here is a link to my project I uploaded to DropBox.
I am trying to add custom JS to my Rails 7 project. I followed the instructions on this StackOverflow answer.
But I'm still not able to use custom JS in my view.
Here is my main.js:
function sayHi() {
console.log("hi");
}
window.sayHi = sayHi;
Here is my view (index.html.erb):
<div>
<button type="button" onclick="sayHi()">Click Me!</button>
</div>
When I click the button, in the console it just says:
Uncaught ReferenceError: sayHi is not defined
I'm really not sure how to access the custom JS from my view.
Here is a link to my project I uploaded to DropBox.
Share Improve this question edited Dec 11, 2022 at 14:06 Slaknation asked Dec 9, 2022 at 23:29 SlaknationSlaknation 1,9364 gold badges28 silver badges48 bronze badges 1- 2 Better solution - just stop writing JS like its 2005 and attach an event handler. You'll thank me later. – max Commented Dec 11, 2022 at 8:39
3 Answers
Reset to default 4So I am going to post this as a plete answer to anyone who wants to add javascript to their Rails 7 project:
Create your custom JS file in
app/javascript/custom/main.js
(or whatever file name you like):function sayHi() { console.log("hi"); } window.sayHi = sayHi; // You must have this to expose your functions
(or you can use an event hanlder instead)
Go to
config/importmap.rb
and add the following:pin_all_from "app/javascript/custom", under: "custom"
Go to
app/javascript/application.js
file and add the following:import "custom/main"
Run In your terminal:
rails assets:prepile
Start your rails server. Voilà