render_to_string returns the result of executing some template or partial in a string instead of sending it as the response body to the browser. Render returns the result of evaluating some template or partial as a string of html, like render_to_string, but it then sends it back as part of the response body to the browser. Now with ajax, when I use jquery's get method like this:
$.get(url, function(resp) { $('#tabs').append(resp); })
If I use render_to_string, it sends an actual string back the browser and thats what is appended to the DOM. When I use render, it returns HTML back to the browser and thats what is correctly appended to the DOM.
So what causes the difference? Does render send as part of the response body a header like "text/html" or something?