2013-04-21 3 views
0

У меня есть приложение Sinatra, которое должно получать URL-адреса изображений из файла JSON и помещать их в теги 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

wow, глупый, трюки для детей. благодаря :) – user1938700

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 возвращает содержимое файла так же, как его открытие и чтение на отдельном шаге, только все это за один шаг. После этого файл автоматически закрывается.

 Смежные вопросы

  • Нет связанных вопросов^_^