activestorage user.avatar.attached? in javascript

How would I run this same test in javascript without renaming my room_channel.js to room_channel.js.erb ?

You can’t, you need the .erb extension to execute ruby code.

I can change any .js file to .js.erb ? In this case it’s app/javascript/channels/room_channel.js Passing data between javascript and rails is an important topic so I wanna learn as best I can without “cheating” but I’m attracted to the js.erb method too, I wanna mix it up something use js.erb sometimes use just .js so I don’t end up ignorant

Although you can use .js.erb extension for any .js file you have to understand WHEN that erb gets executed to understand what you can do with it.

Assets with .erb extension are compiled to JS code during the assets precompilation process, you can’t put request dependant code (current_user, instance variables, request controller/action, etc) inside an .js.erb asset file because it’s an isolated process (assets are compiled into one final static .js bundle).

You can put request dependant code on .js.erb VIEWS because views are executed when they are needed for each request.

Not all js files are used the same way, you can use .erb extension to have ruby code but have to take into account the context to understand what variables you have access to.

In your case, you CAN’T call “user.avatar.attached?” inside app/javascript/channels/room_channel.js.erb because it’s a request dependant object.