Alan Larkin
2009-Jan-10 13:10 UTC
[Facebooker-talk] Showing updated facebook_messages after Ajax failure
I''m trying to work out how to update facebook_messages when an Ajax request fails. I thought I would do something based on the Ajax/JSON example in Mangino''s book. So I created a created a partial which simply renders facebook_messages: # views/shared/_messages.fbml.erb <div id="messages"> <%= facebook_messages %> </div> In my controller''s error handling section I do something like: respond_to do |format| format.json do flash[:error] = ''An error message'' render :json => { :ids => [:messages], :fbml_messages => render_to_string(:partial => ''shared/messages.fbml.erb'') }, :status => 500 end end And in my view use: "function(data) { for(var i = 0; i < data["ids"].length; i++) { var id = data["ids"][i]; $(id).setInnerFBML(data["fbml_" + id]); } }" as the failure callback. However, unlike the success callback, the failure callback does not receive any arguments, so the message partial which was rendered to string is unavailable and thus cannot be used to update the page! If instead I try to use fb:js-string to convert the FBML for displaying the facebook_messages to a Javascript variable, it will only be evaluated once, when the page loads, and thus not show any subsequent updates of the flash variables due to Ajax requests. So what the hell does one do?? -- <a href="http://wikimediafoundation.org/wiki/Donate/en"><img border="0" alt="Wikipedia Affiliate Button" src="http://upload.wikimedia.org/wikipedia/foundation/5/58/2008_fundraiser_micro_button-en.png" /></a>