2013-02-27 40 views
0

我正在研究我的學習項目,並將從數組中獲取的某些數據轉換爲變量時出現問題。將array.each添加到變量在Rails中爲零(!?)方法提供了「+」方法

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

你用'.each {| e | movie_act.country << e [「name」]}'?這意味着'movie_act.country'是一個數組 – MrYoshiji 2013-02-27 18:50:18

回答

0

問題是你打電話+=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"] }