2016-05-31 11 views
0

としてJSONオブジェクトを処理しているしかし、私は以下のようなエラーに実行していますよ。Railsのコントローラは</p> <pre><code><% @data.each do |x| %> <%= x['method'] %> <% end %> </code></pre> <p>、私は静的なJSONファイルを持っていると<code>.html.erb</code>テンプレートのように、それを反復処理したい文字列

undefined method `each' for #<String:0x007ffb11e33de8> 

RailsはJSONを文字列として解釈しているようです。

コントローラ

def index 
    @data = File.read("#{Rails.root}/data/docs.json") 
end 

docs.json

[ 
    {method: "POST", usage: "xyz"}, 
    {method: "DELETE", usage: "abc"}, 
    {method: "GET", usage: "mno"} 
] 

私のテキストエディタで、私は単純に、のような

data.each {|x| p x} 
をJSONオブジェクトを反復処理することができますので、これは混乱しています

Railsアプリケーションでこれがなぜ違うのか説明できる人はいますか?

答えて

4

まず文字列オブジェクトは、エラーがundefined method 'each' for #<String:0x007ffb11e33de8>を上げている理由thatsの返却File.readので、あなたは、JSONファイルを解析する必要があります

def index 
    @data = JSON.parse(File.read("#{Rails.root}/data/docs.json")) 
end 

Also your file is not a valid JSON notation.

それは次のようになります。

[ 
    { "method": "POST", "usage": "xyz"}, 
    {"method": "DELETE", "usage": "abc"}, 
    {"method": "GET", "usage": "mno"} 
] 
+0

申し訳ありませんが、インクルードするのを忘れていましたが、同様に試して、 '419:unexpected token 'というエラーが出ました。 –

+0

@pandamanは更新された解答を読んでいます。 –

関連する問題

 関連する問題