Forum: Ruby on Rails RSS Feed parsing problem

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
7af028825f6c0f24554c69b2c93729a0?d=identicon&s=25 Nick Hoyle (hoylen)
on 2009-04-12 18:59
I want to parse multiple feeds but i have ran into problems

Im doing a query on a table which returns rss feed urls stored in an
instance variable called @urls .

with each of these eed urls i want to parse them like below

@feeds = SimpleRSS.parse open(@urls.feed_url)

however this only works when doing a query for first or last and not
find:all. eg: just 1 feed url

undefined method `feed_url' for #<Array:0x7f97c3f4faf8>


any suggestions on what the problem is? ive tried the approach of trying
to put this into a loop but had no luck and are struggling to find a
solution

Regards

nick
36ed63ef68c172f148c491418395d0b5?d=identicon&s=25 David Knorr (Guest)
on 2009-04-12 21:35
(Received via mailing list)
On 12 Apr., 18:59, Nick Hoyle <rails-mailing-l...@andreas-s.net>
wrote:
> find:all. eg: just 1 feed url
>
> undefined method `feed_url' for #<Array:0x7f97c3f4faf8>
>
> any suggestions on what the problem is? ive tried the approach of trying
> to put this into a loop but had no luck and are struggling to find a
> solution

To me the problem is pretty obvious. You are trying to call an
undefined method 'feed_url' on an Array. To make this work you should
call the method on each of the items in the Array individually. Like
this:

@feeds = []
@urls.each do |url|
  @feeds << SimpleRSS.parse open(url.feed_url)
end

You need to know, that whenever you're asking ActiveRecord for
multiple records in the database, they will always come back as an
Array with each item representing a record or model. But when you're
asking for just a single record (Model.find(:first) or Model.find
(:last)) you simply get the record/model back.

--
Best regards,
David Knorr
http://twitter.com/rubyguy
7af028825f6c0f24554c69b2c93729a0?d=identicon&s=25 Nick Hoyle (hoylen)
on 2009-04-12 21:44
hi thanks for the reply, was much needed.

I knew what i was trying to do which was like you say call each of the
items in the array i just wasnt sure how to do it, and attempted a
similar type of loop but had no luck.

I will look into this and see if i can achieve what i want

Thanks alot

nick
7af028825f6c0f24554c69b2c93729a0?d=identicon&s=25 Nick Hoyle (hoylen)
on 2009-04-12 22:02
Nick Hoyle wrote:
> hi thanks for the reply, was much needed.
>
> I knew what i was trying to do which was like you say call each of the
> items in the array i just wasnt sure how to do it, and attempted a
> similar type of loop but had no luck.
>
> I will look into this and see if i can achieve what i want
>
> Thanks alot
>
> nick

just another quick question

how would i able to output each parsed feed from the array @feeds[] in a
view?
36ed63ef68c172f148c491418395d0b5?d=identicon&s=25 David Knorr (Guest)
on 2009-04-15 21:04
(Received via mailing list)
On 12 Apr., 22:02, Nick Hoyle <rails-mailing-l...@andreas-s.net>
wrote:
>
> > nick
>
> just another quick question
>
> how would i able to output each parsed feed from the array @feeds[] in a
> view?

You would do something like this:

<ul id="feeds">
  <%- @feeds.each do |feed| -%>
    <li><%= feed.channel.title %></li>
  <%- end -%>
</ul>

Voila, a list of feed titles. :)

--
Best regards,
David Knorr
http://twitter.com/rubyguy
This topic is locked and can not be replied to.