this was incredible response, everything was explained so clearly.

On Sep 18, 2:40 pm, 7stud -- <li...@ruby-forum.com> wrote:
> John Merlino wrote in post #1022569:
>
> > Hey all,
>
> > This is my understanding of html and browsers. On the server, html is
> > plain text. When the browser sends request to server to fetch a
> > document, if the file is not already in html format, perhaps instead
> > in  an rb file, ruby or whatever the server-side language of choice
> > converts the file to html and sends it to the browser.
>
> No.  Suppose you had a .rb file like this:
>
> [1, 2, 3]. each do |num|
>   puts num * 4
> end
>
> How would rails convert that to html?  Put <h1> tags around the output?
> <div> tags?  Use an unordered list: <ul><li></li>...<ul>?
>
> Everything transmitted over http is plain text--it's just that when a
> browser sees things like <h1> in the response, it is programmed to
> display the text with big, bold letters.
>
> > But what if we
> > have a partial thats not included in the document that is fetched?
> > Does it remain on the server as plain text and, therefore, is not part
> > of dom tree and therefore cannot be manipulated by javascript?
>
> If the partial doesn't have anything to do with the document that the
> browser requested, then the browser doesn't know the partial even
> exists.  The browser can only see what is in the response.  Likewise, js
> doesn't know anything about the partial either.
>
> > In
> > other words, if we try to modify a dom node via javascript that is in
> > a partial on the server
>
> Impossible.  The dom is created by the browser from what's in the
> response.  If it isn't in the response, it isn't in the dom.  Of course,
> you can change the current dom with js.
>
> > then javascript compiler will
> > raise an exception of undefined object. Now one technique is to use
> > ajax, where a user clicks a link, javascript captures event, sends
> > request to the server via ajax, and ruby handles the request. Now if
> > the response is to send the object back to the browser,
>
> Just to clarify, plain text is sent back in the response to the js
> request.  js then interprets the plain text, much like a browser
> interprets an <h1> tag in the plain text it receives as a response.
>
> > specifically
> > javascript in plain text, then our rails method would have something
> > like this: render :text => ret_object.to_json. Now what if that
> > returned object hash (that utlimately gets converted to json before we
> > send response back to client) included this: returned_object[:data]
> > [:view] = render_to_string :partial => '/home/my_table'. Note that
> > my_table is  a partial in home directory.
>
> That is ruby code.  js doesn't understand ruby.  On the other hand, if
> that ruby code executes on the server before the response is sent back,
> then something may get added to ret_object, and when ret_object is
> converted to json format, whatever was added by the ruby code will be in
> the json.
>
> ruby executes on the server, js executes in the browser.  js does not
> execute ruby code.
>
> > When we grab the response
> > via javascript, then we can stick it anywhere on the existing DOM
> > tree: $('#my_table .my_content').append(resp.data.view);. Now that
> > data can be manipulated by javascript. Is this all correct?
>
> Yes.  Once js gets a response, the js can do anything it wants with the
> response.  If the response text is in html format,  js can search for
> one html element in the text and insert that in the dom, or js can
> insert the whole html fragment in the dom.
>
> If the text in the response is in json format, js can extract some data
> from the json, insert it in a div tag, and insert the div tag in the
> dom.
>
> > 1) My question is does that partial remain plain text on server until
> > it is explicitly loaded on the document that was fetched from server.
>
> Everything  contained in requests and responses is text, and every file
> on the server is text. Once the browser receives some text in html
> format, i.e. it has those funny looking tags everywhere, it creates the
> dom.
>
> > 2) What exactly is the point of render_to_string? Why can't we just
> > use "render"? Or do we need to use render_to_string in order to use
> > the jquery append method, for example, when appending it to the DOM?
>
> According to railsguide:
>
> ... render_to_string. This method takes exactly the same options as
> render, but it returns a string instead of sending a response back to
> the browser.
>
> So render_to_string does not send a response back to the browser, while
> render :text => '<div>hello world</div>" does send a response back to
> the browser.
>
> --
> Posted viahttp://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to