Ruby on rails 如何从rails中的哈希数组中提取项
我们获取新内容的rails代码如下:Ruby on rails 如何从rails中的哈希数组中提取项,ruby-on-rails,ruby,ruby-on-rails-4,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 4,Ruby On Rails 5,我们获取新内容的rails代码如下: def self.update_from_feed_continuously(feed_url) puts "I am running" @all_feeds = Feed.all for @feed in @all_feeds sleep 1.5 xml = HTTParty.get(@feed.url).body @new_feed = Feedjira.parse(xml) @entry = @new_feed.en
def self.update_from_feed_continuously(feed_url)
puts "I am running"
@all_feeds = Feed.all
for @feed in @all_feeds
sleep 1.5
xml = HTTParty.get(@feed.url).body
@new_feed = Feedjira.parse(xml)
@entry = @new_feed.entries.take(4)
@items = Item.where("feed_id = ?", @feed.id)
i = 0
for @item in @items
@new_item = @entry[i]
@item.title = @new_item.title
@item.description = Nokogiri::HTML.parse(@new_item.summary).css('p').text.strip.truncate(200)
unless Nokogiri::HTML.parse(@new_item.content).css('img').nil?
@item.image = Nokogiri::HTML.parse(@new_item.content).css('img').attr("src")
end
@item.url = @new_item.url
@item.created_at = @new_item.published
@item.save
i = i + 1
end
end
结束
然而,在最近的更改中,我们发现@item.title
不再定义@title
时出错,我们知道它是因为@item
为@items
返回了一个数组或散列
我们使用console尝试执行
@item.title。首先是或@item[0]。title
有效,但使用@item[i]。title
没有我不太了解使用@feed的必要性。相反,使用each\u with\u index
方法进行迭代怎么样
这样可以为您提供每个对象在数组中的位置
示例
@all_feeds.each_with_index do |feed, feed_position_in_array_number|
puts feed
# will return the object
puts feed_position_in_array_number
# as example will return 4 that can help you for done something like @all_feeds[feed_position..]
end
事实上纠正了这一点,我们需要将@new_item.title
存储到@item.title
中,但是,如果@item.title
和title是在@item的散列中,我想不出怎么做。您是否尝试过@item[:title]
或@item['title']
?顺便说一句,这个代码是非常非rubysh。对于枚举数,您通常会执行类似于Feed.all.each do | Feed |
的操作。跳过所有i=0
和i=i+1
的东西。嗨@jvillian,是的,我们已经尝试了这两种方法,在控制台中我们可以拉东西,但在实际代码中它是未定义的。我也知道这只是代码中的一个额外部分,它是由几个月前我们放弃的人开发的。代码在几天前运行了查询,所以不确定是怎么回事。我觉得我们需要更多具体的信息。出现问题时,@item
的类和属性是什么?你的代码,在不经意的观察下,看起来还行(即使不是红色的)。你的问题的标题是错误的。考虑到NoMethodError
,你的问题应该是“如何从nil对象中提取标题?”答案是,“你不能,因为它是nil对象。”所以,你的问题应该是,“为什么我的对象是nil?”一些有重点的调试应该可以让您了解这一点。虽然指向each_with_index
方法的指针是好的和有价值的,但它不能回答OPs问题。