0

<img>JSON ファイルから画像の URL を取得し、それらを HTMLタグに入れる Sinatra アプリケーションがあります。

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>
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 でもありません。最初の 2 つの置換は、開いているファイルを自動的に閉じます。
  • を使用File.readすると、ファイルを開いて別の手順で読み取るのと同じように、ファイルの内容が返されます。すべてが 1 つの手順で行われるだけです。その後、ファイルも自動的に閉じられます。
于 2013-04-21T15:24:06.823 に答える