我有一个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>
答案 0 :(得分:1)
你不只是在这里错过了一个“=”:
<li> <%= shop["url"] %> </li>
答案 1 :(得分: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
返回文件的内容,就像打开它并在单独的步骤中阅读一样,只有一步完成。该文件也会在之后自动关闭。