I'm trying to embed some rails data in an external js file instead of placing it in a script tag in my .html.haml. How do I do this? I looked around and read up on .js.erb stuff, but I'm stumped. I'm also confused about if/when I should be using .rjs at all for this. I'm using jquery if this helps. Thanks!
for more info, basically I'm trying to follow along Ryan Bate's railscast http://asciicasts.com/episodes/223-charts, but put all the graph information in an external js. He mentions that an ajax request should be made when the page is loaded, but I'm not 100% on how to do this.
So far, I've experimented doing the following:
in application.js:
$(document).ready(function(){
$.ajaxSetup({
'beforeSend': function (xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
});
$.ajax({ type: 'POST', url: '/graphs'});
});
graphs.js.erb (random stuff to see if it works):
$('.so开发者_运维技巧me_container').append('hello!');
$('h1').append('hello!');
this seems to work although the hello's appear after a brief delay, and i'm guessing embedded ruby will work too. however, if I start adding the graph stuff to this .js.erb it stops working (like data = 1
). also it seems like a lot just to have a dynamic js file.
Edit: the 'hello's append in all views, so I must be doing something wrong :/ I only wanted it to append to the profile view.
Maybe you should put that js code in a partial and still use it as html: _myjavascript.html.erb
(use javascript_tag in your partial).
You name your view as myview.js.erb when it should respond to a JS request (not HTML):
respond_to do |format|
format.js { render 'myview' }
end
精彩评论