How to include js.erb file in view folder
Solution 1
javascript_include_tag won't work js.erb declared in the view folder itself. There are three different ways you can have the javascript.
1] Write the code in the view, i.e., in the html.erb itself.
2] Create js file in public/javascripts folder and include it using javascript_include_tag.
3] In case you want to make the request as Ajax:
- Create the js.erb in the view folder itself with the same name as that of the action.
- In the view where some form is created which will be calling this action, make the request using
:remote => true
. In the called action, use code as follows:
def action respond_to do |format| format.js end end
Solution 2
you can do this by
render :partial => "myfile"
you have to keep your file in controller's view directory with name _myfile.js.erb
Now you can write your own code (js,ruby) here and probably can separate out js with javascript_include_tag to avail asset pipline
This file will be first rendered by erb engine and then as javascript.
Gregir
Updated on July 17, 2022Comments
-
Gregir almost 2 years
I have a JavaScript file to use with a view. There needs to be Ruby code in it, and I need to do
render
in Ruby, so I understand that I can't put the JavaScript file in the asset pipeline. I can put it in the same view folder as the.html.erb
file.How do I include the JavaScript file, or use that JavaScript file for that view file? I tried
javascript_include_tag
in my view (that uses the asset pipeline apparently), using scriptsrc="myfile.js"
for themyfile.js.erb
file (but it can't findmyfile.js
), and names myjs.erb
file (users.js.erb
) the same as my.html.erb
file (users.html.erb
), but all to no avail. -
Giovanni Di Toro over 5 yearsI'd really appreciate if you put some examples under each step with file names, i.e.: views/model_name/action.js.erb: [code example].
-
Giovanni Di Toro over 5 yearsWhat do you mean by "separate out js with javascript_include_tag to avail asset pipline" ?