activestorage user.avatar.attached? in javascript

17 views
Skip to first unread message

fugee ohu

unread,
Jan 26, 2020, 10:28:39 PM1/26/20
to Ruby on Rails: Talk
How would I run this same test in javascript without renaming my room_channel.js to room_channel.js.erb ?

Ariel Juodziukynas

unread,
Jan 27, 2020, 8:28:48 AM1/27/20
to rubyonra...@googlegroups.com
You can't, you need the .erb extension to execute ruby code.

El lun., 27 ene. 2020 a las 0:29, fugee ohu (<fuge...@gmail.com>) escribió:
How would I run this same test in javascript without renaming my room_channel.js to room_channel.js.erb ?

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/bdf21e73-81a0-4485-957e-82afa0e2d6a9%40googlegroups.com.

fugee ohu

unread,
Jan 28, 2020, 9:16:27 AM1/28/20
to Ruby on Rails: Talk


On Monday, January 27, 2020 at 8:28:48 AM UTC-5, Ariel Juodziukynas wrote:
You can't, you need the .erb extension to execute ruby code.

El lun., 27 ene. 2020 a las 0:29, fugee ohu (<fuge...@gmail.com>) escribió:
How would I run this same test in javascript without renaming my room_channel.js to room_channel.js.erb ?

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonra...@googlegroups.com.

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

Ariel Juodziukynas

unread,
Jan 28, 2020, 10:25:37 AM1/28/20
to rubyonra...@googlegroups.com
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.

To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/3866a144-220f-4e6a-ad06-090226af6ef9%40googlegroups.com.

Ariel Juodziukynas

unread,
Jan 28, 2020, 10:27:59 AM1/28/20
to rubyonra...@googlegroups.com
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.
Reply all
Reply to author
Forward
0 new messages