2014-12-13 57 views
0

我有一個文本文件位於我的項目目錄中,其中包含站點鏈接以及徽標的位置。例如:在ruby中循環散列文件

img1 = {name => "logo1", link => "http://example.com", imgpath => "img/logo1.png"} 
img2 = {name => "logo2", link => "http://foobar.com", imgpath => "img/foobar.png"} 
img3 = {name => "logo3", link => "http://foobar.com", imgpath => "img/foobar2.png"} 

我想要做的是循環瀏覽該文本文件以顯示每個圖像及其鏈接。我已經搜遍了,我似乎無法找到一個很好的例子來說明如何去做。這裏的for循環,我在我的網頁這麼遠:

- File.open("img/logos.txt").readlines.each do |name,link,imgpath| 
    .col-sm-6.col-md-4.col-lg-3 
    .item-work 
     .hover 
     %img{:alt => "Image", :src => "img/#{imgpath}"}/ 
     %a.lightbox-image{:href => "#{link}", :title => "Image"}/ 
     .overlay 
     .info 
     %a{:href => "#{name}"} #{name} 

我有點接近,頁面加載的所有標誌,除了圖像不存在,並鏈接與它們相關聯。我知道這是因爲我沒有在我的%img鏈接和%a標籤中正確調用它們,但我似乎無法弄清楚。你會如何建議去做這件事?

+0

readlines將把這些行中的每一行變成一個字符串。你是否可以控制'img/logos.txt'文件,比如數據如何存儲在那裏? – Anthony 2014-12-13 20:00:01

+0

是的,以不同的方式存儲它有意義嗎? – niharvey 2014-12-13 20:01:45

回答

1

#readlines將爲您提供文本文件的每一行字符串。基於您的評論,這將細字:

logos.txt:

logo1,http://example.com,img/logo1.png 
logo2,http://foobar.com,img/foobar.png 
logo3,http://foobar.com,img/foobar2.png 

Haml的:

- File.open("img/logos.txt").readlines.each do |line| 
    - img = line.split(',').map(&:chomp) 
    .col-sm-6.col-md-4.col-lg-3 
    .item-work 
     .hover 
     %img{:alt => "Image", :src => "img/#{img[2]}"}/ 
     %a.lightbox-image{:href => "#{img[1]}", :title => "Image"}/ 
     .overlay 
     .info 
     %a{:href => "#{img[0]}"} #{img[0]} 

第二行創造價值的一個數組,像這樣:

[1] pry(main)> line 
=> "logo1,http://example.com,img/logo1.png\n" 
[2] pry(main)> line.split(',').map(&:chomp) 
=> ["logo1", "http://example.com", "img/logo1.png"]