Ya, I am not doing an ajax call because it is not really needed.  I can
possibly have new equipment and that would require more maintenance to tell
the ajax call where to go for that piece of eqpt.  The way I am doing would
just require an array entry and a controller action.  Anyway, I got it to
work by doing this in the view:

$('shelfcards').innerHTML = (<%= render :partial => 'turin2000' %>);


On Wed, Feb 25, 2009 at 6:21 AM, Jeremy Olliver <[email protected]>wrote:

>
> Do note, that this is not really ajax. The point of ajax, and more
> importantly the use of rendering a partial is that when you make the
> request you are not reloading the entire page, but rather using
> javascript to send a request to the server in the background while the
> existing page doesn't reload. Using the javascript
> document.location.href call makes a full page load (regular html page
> request). To implement this instead with ajax you might instead have
> the select element inside a form, which you would post to a controller
> action (you can send the form using the onchange option for the select
> tag).
>
> The reason for this is because the partial contains only part of a
> valid html page as Fred mentioned, using this method the controller
> action responding to the call, can then respond with something like
> page.replace_html :partial => "my_partial", which is some javascript
> telling the page that send the request to replace part of it's old
> html with the new version (sent as a string inside the javascript).
> Doing it this way will get teh ajax request working correctly (a true
> ajax call, with an rjs or render(:update) controller response). It's
> either that or return an entire html page with fresh contents on the
> page called by '/buildshelf/' + this.value "
>
> Cheers,
> Jeremy
>
> On Feb 25, 11:40 am, Chris Habgood <[email protected]> wrote:
> > Well the "page fragment"  is a div with a partial in it.  I need to be
> able
> > to make a regular call and update the div with the partial.  I have a
> select
> > box used to go to a page.  I need to be able to change out what is in the
> > div.
> >
> > <%= select(:node, :id, $shelves,{:prompt =>'Select Equipment'},{
> :onchange
> > => "document.location.href = '/buildshelf/' + this.value "} ) %>
> >
> > This div:
> > <div id="shelfcards"> </div>
> >
> > has the partial for the cards in the shelf.
> >
> > On Tue, Feb 24, 2009 at 4:32 PM, Frederick Cheung <
> >
> > [email protected]> wrote:
> >
> > > On 24 Feb 2009, at 18:32, Chris Habgood wrote:
> >
> > > > Not an ajax call.  Does it only work for an ajax call?
> >
> > > Yes. if you use render :update it returns some javascript. The
> > > prototype (and jquery etc.) libraries know to execute that javascript,
> > > but just a generic browser page load doesn't
> >
> > > If you want to replace a page fragment you have to use an ajax request
> > > (although you don't have to use render :update):
> >
> > > if you have link_to_remote 'Click me', :update => 'some_id', :url =>
> > > {:action => 'foo'}
> >
> > > and then
> >
> > > def foo
> > >   render ...
> > > end
> >
> > > Then the results of that render will get stuck in the page element
> > > with id some_id. You only need the render :update / rjs mechanism to
> > > update multiple things on the page.
> >
> > > Fred
> >
> > > > On Tue, Feb 24, 2009 at 12:31 PM, Frederick Cheung <
> > > [email protected]
> > > > > wrote:
> >
> > > > On 24 Feb 2009, at 18:14, Me wrote:
> >
> > > > > I have this div in my application.rhtml file:
> >
> > > > > <div id="shelfcards"> <%= render :partial => 'ericssoncards' %></
> > > > div>
> >
> > > > > When I go to another view I am doing this:
> >
> > > > > def turin2000
> > > > >               render :update do |page|
> > > > >                       page[:shelfcards].replace_html :partial =>
> > > > 'turin2000'
> > > > >               end
> > > > >  end
> >
> > > > What does the think making the ajax request look like ?
> >
> > > > Fred
> > > > > I get this for an output:
> >
> > > > > try {
> > > > > $("shelfcards").update("<fieldset style='width: 400px;'>
> > > > > \n<legend>Select your card type</legend>\n\n\t<div id='oc192'
> > > > > class='card' >OC-192</div>\n\t<div id='oc48' \t\tclass='card'
> > > > >OC-48</
> > > > > div>\n\t<div id='oc12' \t\tclass='card' >OC-12</div>\n\t<div
> > > > id='oc3'
> > > > > \t\tclass='card' >OC-3</div><br /><br />\n\t<div id='28pds1'
> > > > > \tclass='card' >28P DS-1</div><br /><br />\n\t<div id='egcm' \t
> > > > > \tclass='card' >EGCM</div><br /><br />\n\t<div id='gbeth'
> > > > > \tclass='card' >GB ETH</div><br /><br />\n\t<div id='vt5g' \t
> > > > > \tclass='card' >VT 5G</div><br /><br />\n</fieldset> \t\t");
> > > > > } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('$
> > > > > (\"shelfcards\").update(\"<fieldset style=\'width: 400px;\'>\
> > > > > \n<legend>Select your card type</legend>\\n\\n\\t<div id=\'oc192\'
> > > > > class=\'card\' >OC-192</div>\\n\\t<div id=\'oc48\' \\t\\tclass=
> > > > \'card
> > > > > \' >OC-48</div>\\n\\t<div id=\'oc12\' \\t\\tclass=\'card\' >OC-12</
> > > > > div>
> > > > > \\n\\t<div id=\'oc3\' \\t\\tclass=\'card\' >OC-3</div><br /><br />\
> > > > \n\
> > > > > \t<div id=\'28pds1\' \\tclass=\'card\' >28P DS-1</div><br /><br />\
> > > > \n\
> > > > > \t<div id=\'egcm\' \\t\\tclass=\'card\' >EGCM</div><br /><br />\\n\
> > > > > \t<div id=\'gbeth\' \\tclass=\'card\' >GB ETH</div><br /><br />\\n\
> > > > > \t<div id=\'vt5g\' \\t\\tclass=\'card\' >VT 5G</div><br /><br />\
> > > > \n</
> > > > > fieldset> \\t\\t\");'); throw e }
> >
> > > > > If I put this partial inside the div manually it works fine.
> >
> > > > > What causes this?
> >
>

--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to