0

我有一个 Sinatra 应用程序,它应该从 JSON 文件中获取图像 URL 并将它们放入 HTML<img>标记中。

当我将它打印到命令行时,我可以很好地解析 JSON,但是当我使用 ERB 放置数据时,它不会显示。

我把它放在<ul>标签中,只得到 JSON 文件中每个图像的要点。

这是我的代码:

应用程序.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

咆哮.erb:

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

 <% end %>
</ul>
4

2 回答 2

1

你不只是在这里错过了一个“=”:

<li> <%= shop["url"] %> </li>
于 2013-04-21T12:37:10.240 回答
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返回文件的内容,就像打开它并在一个单独的步骤中读取一样,只有一个步骤。该文件也会在之后自动关闭。
于 2013-04-21T15:24:06.823 回答