Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to include js.erb file in view folder

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 script src="myfile.js" for the myfile.js.erb file (but it can't find myfile.js), and names my js.erb file (users.js.erb) the same as my .html.erb file (users.html.erb), but all to no avail.

like image 236
Gregir Avatar asked Aug 26 '13 05:08

Gregir


2 Answers

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
    
like image 157
sumitshining Avatar answered Nov 19 '22 07:11

sumitshining


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.

like image 2
maximus ツ Avatar answered Nov 19 '22 07:11

maximus ツ