### Controller
* In your controller, have all the necessary variables available for use in the views
* You will also need to have a `respond_to` block that will handle which type of files to render
```ruby
def index
@var = ...
@var2 = ...
respond_to do |format|
format.js
format.html
end
end
```
* The syntax above **only works** if you 2 files called `index.js` and `index.html.erb`.
* You would need to specify next to the format which files to render (if they have different names)
---
### `.js` File
* A `.js` file is used to render the results of an AJAX request (which is used to load items on your
page without refreshing the page)
* As mentioned above, you will need an `index.js` file which will target an HTML element on the page
(usually an `id`) and _insert_ HTML into the element by rendering a partial, as an example:
```ruby
# index.js
("#some_id").html("<%= j render partial: "file_name", locals: {@var: var} %>")
```
* Ofcourse, you will need to write the javascript to activate this file:
```javascript
$("#some_form_element").change(function() {
//capture some value
$.ajax({
url: '',//this is the url that will be routed to the controller to have the .js file activated
type: 'POST',
data: var: value_captured_above
})
})
```
* **Even though its not appropriate to use**, you can use a `GET` request to pass in values obtained
from jQuery to use in your controller action. You can then obtain this value by checking `params[]`:
```javascript
$("#..").change(function(){
// code
var blah = ...
$.ajax({
url: `/asfaf/asd/?any_name=${blah}`
type: "GET"
})
})
```
### View
* Finally, your `.js` file will render an HTML partial that contains HTML on how the results from
the controller will be displayed