0

研究プロジェクトに取り組んでいますが、配列から変数にデータを取得する際に問題が発生します。

    m_id = params[:m_id]    #from the search form

    headers  = {:accept => "application/json"}
    response = RestClient.get "http://api.themoviedb.org/3/movie/#{m_id}?api_key=8f8bdc43aaf51d09127c3eb023007a53", headers     
    parsed_json = JSON.parse(response)

    movie_act = Movie.new
    parsed_json["production_countries"].each { |e| movie_act.country += e["name"] }

そして、コードのために

    movie_act.country = parsed_json["production_countries"][0]["name"].to_s

それは大丈夫です(それが1つの国、最初の国だけを与えるという事実にもかかわらず-私はすべての国が必要です)。

私が得るエラーは次のとおりです。

 NoMethodError in MoviesController#create

 undefined method `+' for nil:NilClass
 Rails.root: C:/Users/Asus/Moje dokumenty/GitHub/interfejs

 Application Trace | Framework Trace | Full Trace
 app/controllers/movies_controller.rb:94:in `block in create'
 app/controllers/movies_controller.rb:93:in `each'
 app/controllers/movies_controller.rb:93:in `create'

どうしたの?助けてください!

4

1 に答える 1

0

問題は、 を呼び出し+=ているmovie_act.countryが、movie_act.countryを返していることですnil

どのタイプのオブジェクトであるmovie_act.countryと想定されていますか? Array?_ String? _ どちらの場合でも、.eachループの前に空の値で初期化することでこのエラーを回避できArrayます。

movie_act = Movie.new(:country => [])
parsed_json["production_countries"].each { |e| movie_act.country += e["name"] }
于 2013-02-27T18:28:22.853 に答える