Я создаю RSS-канал для уведомлений пользователей, у каждого пользователя есть уникальный канал, который они получают с уникального URL. Проблема в том, что @notifications (установленное в контроллере) дает объект, который считается nil, но @notifications и существует, и содержит данные.
Вот код контроллера:
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
и это 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
конец
При обращении к URL с правильным api_key, я получаю эту ошибку:
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
Указанный api_key является правильным, как показано под параметрами на экране «Обнаружено исключение»:
Parameters:
{"api_key"=>"AAEE5663HHH"}
При запуске команд через консоль все работает как положено (например, когда я запускаю почти идентичный код для отображения уведомлений через обычную веб-страницу), поэтому я подозреваю, что @notifications неправильно передается в файл RXML, хотя я не могу понять, почему нет.
Ключ пользователя и API определенно совпадают, и для пользователя есть определенные уведомления.
Это первый RSS, который я сделал после следующего примера: http://paulsturgess.co.uk/articles/show/13-creating-an-rss-feed-in-ruby-on-rails
Любая помощь по этому вопросу будет принята с благодарностью!