ajax question

Hello, could you please explain what's wrong with this code:

Rails 3.1.1

skills_controller.rb

class SkillsController < ApplicationController    # GET /skills # GET /skills.json def index     @skills = Skill.all

    respond_to do |format|       format.html # index.html.erb       #format.json { render json: @skills }       format.js     end   end end

index.html.erb

<%= collection_select(nil, :id, @skills, :id, :title, {:prompt=>"Select one", :id=>:id},{:id=>"select_skill"}) %> <div id="skills_list"> </div>

app/assets/javascripts/index.js

$(document).ready(function() {   $("#select_skill").change(function()   {       $("#skills_list").append("<%= escape_javascript(render :partial=>'skills_list') %>");   }); });

_skills_list.html.erb

<div id="skills_list"> <table>   <tr>     <th>Title</th>     <th>Parent</th>   </tr>

<% @skills.each do |skill| %>   <tr>     <td><%= skill.title %></td>     <td><%= skill.parent_id %></td>   </tr> <% end %> </table>

</div>

It finally prints <%= escape_javascript(render :partial=>'skills_list') %> instead of rendering skills list. I would appreciate if you tell me why.

Thank you in advance, Dmitry.

_skills_list.html.erb

<div id="skills_list"> <table> <tr> <th>Title</th> <th>Parent</th> </tr>

<% @skills.each do |skill| %> <tr> <td><%= skill.title %></td> <td><%= skill.parent_id %></td> </tr> <% end %> </table>

</div>

It finally prints <%= escape_javascript(render :partial=>'skills_list') %> instead of rendering skills list. I would appreciate if you tell me why.

The files in assets there aren't passed through erb, they're not supposed to reference application contents etc. They're completely static js, css etc files that rails does clever stuff to ensure that they are delivered to clients in a way that is efficient, cache friendly etc. If you want a js template to be rendered for your action then it should live in the same place as your other templates (i.e. app/view/ skills)

Fred