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>