我正在研究我的研究项目,我遇到了从数组中将一些数据转移到变量的问题。
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'
有什么问题?请帮忙!
答案 0 :(得分: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"] }