2013-04-21 77 views
0

我有一個Sinatra應用程序,應該從JSON文件中獲取圖像URL並將它們放入HTML <img>標記中。JSON將不會顯示

當我將它打印到命令行時,我可以通過JSON進行解析,但是當我使用ERB來放置數據時,它不會顯示。

我把它放在<ul>標記中,並且只獲得JSON文件中每個圖像的項目符號點。

這裏是我的代碼:

app.rb:

get "/" do 

    file = open("./images.json") 
    json = file.read 

    @parsed = JSON.parse(json) 

    erb :roar 

    #@parsed.each do |roar| 
    # p roar["url"] 
    #end 

end 

Roar.erb:

<ul> 
<% @parsed.each do |shop| %> 
<li> <%shop["url"] %> </li> 

<% end %> 
</ul> 

回答

1

你是不是隻是缺少 「=」 在這裏:

<li> <%= shop["url"] %> </li> 
+0

哇,愚蠢的我,技巧是爲孩子們。謝謝 :) – user1938700 2013-04-21 13:06:54

1

只是對代碼的一些評論:

不要使用:

file = open("./images.json") 
json = file.read 

@parsed = JSON.parse(json) 

相反,使用:

json = File.open("./images.json") do |fi| 
    fi.read 
end 

@parsed = JSON.parse(json) 

或者:

json = File.open("./images.json") { |fi| fi.read } 
@parsed = JSON.parse(json) 

或者:

json = File.read("./images.json") 
@parsed = JSON.parse(json) 

或者:

@parsed = JSON.parse(File.read("./images.json")) 

的原因是:

  • file = open("./images.json")打開該文件,但永遠不會關閉它。這不是很好的形式,也不是慣用的Ruby。前兩個替換會自動關閉打開的文件。
  • 使用File.read返回文件的內容,就像打開它並在單獨的步驟中閱讀一樣,只是一步完成。之後該文件也會自動關閉。