将 array.each 添加到变量不会给出在 Rails 中为 nil (!?) 方法"+"的方法



我正在做我的研究项目,我有一个问题,从数组到变量取一些数据。

    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

没关系(尽管它只给出了一个国家,第一个-我需要所有国家)。

我得到的错误是:
 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'

有什么问题吗?请帮助!

问题是您在movie_act.country上调用+=,但movie_act.country返回nil

movie_act.country应该是什么类型的对象?Array ?A String ?在任何一种情况下,你都可以通过在.each循环之前用空值初始化它来避免这个错误,例如(假设你期望它是Array),

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

最新更新