0

Webサイトから取得した情報を出力するループがあります。情報を読みやすく表示するため<br>に、文字列にaを追加しました。ただし、実行すると<br>、htmlをエスケープして表示されます。html_safeとrawを使用しましたが、どちらも機能しません。コードの何が問題になっていますか?コードはビューホームで呼び出されます(コードが機能したら移動しますのでご安心ください)。

<%= 

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


time = Time.new
month = I18n.t("date.abbr_month_names")[time.month]
day = time.day
"#{month} #{day}"

#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]

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

  end

 end

end

%>
4

2 に答える 2

0
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]
  if date = "#{month} #{day}"
    "<br/>".html_safe + "#{date} #{text} #{link}"
  end
end
于 2012-11-22T21:48:16.377 に答える
0

うーん、まったくわかりませんが、次のことを試してください。

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]

  if date = "#{month} #{day}"
    @string = "#{date} #{text} #{link}<br />"
  end

end.html_safe

別の方法では、解決するのではなく、各行にbrを付けて表示します。

# in controller or whatever
@strings = []
if date = "#{month} #{day}"
  @strings << "#{date} #{text} #{link}"
end

# in the view:
<%= raw(@strings.join('<br />')) %>
于 2012-11-22T21:49:43.883 に答える