【问题标题】:Array only saves the last value in ruby on rails数组仅保存 ruby​​ on rails 中的最后一个值
【发布时间】:2012-11-27 01:22:31
【问题描述】:

我有一个循环输出我从网站获取的信息。为了使信息以可读的方式显示,我将它插入到一个数组中,该数组将显示在我的视图页面上。但是,该数组不会存储所有检索到的值,而是仅保存附加到它的最后一个值。最后我只能得到插入到数组中的最后一个值来显示。

我的控制器文件...

def home
  scrape()
end

private

def scrape 

require 'rubygems'
require 'nokogiri'
require 'open-uri'


time = Time.new
month = I18n.t("date.abbr_month_names")[time.month]
day = time.day 
@strings = []

#United States
cities = [
   "sfbay", "losangeles", "athensga", "phoenix", "santabarbara", "denver",
   "panamacity", "miami", "austin", "bakersfield", "keys", "newyork"
]

cities.map do |city|

#Search Terms
search_terms = ["mechanic", "car", "tech"]

search_terms.map do |term|

  escaped_term = CGI.escape(term)

  url = "http://#{city}.craigslist.org/search/jjj?query=#{escaped_term}&catAbb=jjj&
  srchType=A"

  doc = Nokogiri::HTML(open(url))
  
  doc.css(".row").map do |row|
    
      date = row.css(".itemdate").text
    
      a_tag = row.css("a")[0]

      text = a_tag.text

      link = a_tag[:href]
    
      @strings == []

      if date = "#{month} #{day}"
        @strings << "#{date} #{text} #{link}"
      end

  end

 end

end

end

在查看home.html.erb文件...

<%= raw(@strings.join('<br />')) %>

所以当我转到主页时,我只显示插入数组的最后一个值。出了什么问题,我该如何解决?

【问题讨论】:

    标签: ruby-on-rails ruby arrays ruby-on-rails-3 nokogiri


    【解决方案1】:

    一方面,您为每个城市的每一行创建一个新数组。 (但实际上不要这样做;此时,分配是一个比较,==。)

    对于另一个,您将日期设置为“#{month} #{day}”,而不是进行比较。

    【讨论】:

    • 嗯,我做了应该做的更改,但我的页面仍然没有返回任何内容。编辑:让它工作。感谢您的帮助。
    猜你喜欢
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    相关资源
    最近更新 更多