Je crée un flux RSS pour les notifications des utilisateurs. Chaque utilisateur dispose d'un flux qui leur est propre et qui provient d'une URL unique. Le problème est que @notifications (défini dans le contrôleur) donne un objet nul, mais @notifications existe et contient des données.Obtention d'une exception d'objet Nil lors de la création d'un flux RSS dans Rails
Voici le code du contrôleur:
def user_notifications
render :layout => false
@user = User.find_by_api_key(params[:api_key], :limit => 1)
@notifications = UserNotification.find_all_by_user_id(@user.id, :order => 'id DESC', :limit => 40)
response.headers["Content-Type"] = "application/xml; charset=utf-8"
end
et c'est le fichier RXML:
xml.instruct!
xml.rss "version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do
xml.channel do
xml.title "MySite.com Notifications"
xml.description "The latest goings on at your MySite.com"
@notifications.each do |notification|
xml.item do
xml.title notification.message.gsub(/<\/?[^>]*>/, "")
xml.link "http://www.MySite.com"+notification.url
xml.description notification.message
xml.guid "http://www.MySite.com"+notification.url
end
end
end
fin
Lorsque vous accédez à l'URL avec le api_key correct, je reçois cette erreur:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
Extracted source (around line #9):
6: xml.title "MySite.com Notifications"
7: xml.description "The latest goings on at your MySite.com"
8:
9: @notifications.each do |notification|
10: xml.item do
11: xml.title notification.message.gsub(/<\/?[^>]*>/, "")
12: xml.link "http://www.MySite.com"+notification.url
Le api_key donné est correct, comme indiqué dans les paramètres de l'exception écran pris:
Parameters:
{"api_key"=>"AAEE5663HHH"}
Lors de l'exécution des commandes par la tout console fonctionne comme prévu (comme lorsque je cours près de code identique pour afficher les notifications via un page web normale) donc je suspecte que @notifications n'est pas passé correctement dans le fichier RXML, bien que je ne puisse pas savoir pourquoi.
La clé User et l'API correspondent parfaitement, et il y a définitivement des notifications pour l'utilisateur.
Ceci est le premier RSS je l'ai fait après avoir suivi l'exemple ici: http://paulsturgess.co.uk/articles/show/13-creating-an-rss-feed-in-ruby-on-rails
Toute aide sur ce serait très apprécié!
Merci pour ça! Je ne peux pas croire que j'ai manqué ça – SaucyK