获取nil的未定义方法“each”:
的NilClass错误<% for movie in trailers %>
<li>
<article>
<div class="photo">
<a href="<%= movie['links'] %>"><img src="<%= movie['thumbnail'] %>" alt="Photo" class="wrap_me_white"/></a>
</div>
<div class="details">
<h4 class="title"><a href="<%= movie['title'] %>"></a></h4>
</div>
</article>
</li>
<% end %>
这是使用来自烂番茄的API,它使用不同的API定义并适用于所有其他区域。
def trailers
config = Rails.application.config
resp = HTTParty.get("#{config.rotten_tomatoes_api_url}movies/770672122/clips.json?apikey=#{config.rotten_tomatoes_api_key}")
movies = JSON.parse(resp.body)['movies']
end
我已根据腐烂的西红柿检查确保所有田地都是正确的。我不知道接下来要做什么,因为我已经完成了之前使用的所有问题和修复。我真的很感谢你的时间,如果有更多的数据需要我知道,我会非常乐意提供它。谢谢!
答案 0 :(得分:1)
对于方法trailers
,您要发送回复JSON.parse(resp.body)['movies']
如果它返回一个数组,那么循环将正常工作。如果它返回nil
,那么您将收到错误
undefined method 'each' for nil:NilClass
因为您正在尝试迭代nil
对象。
更好地修改这样的循环,
<% @trailers = trailers %>
<% for movie in @trailers %>
<li> ... </li>
<% end if @trailers.present? %>
答案 1 :(得分:0)
尝试在控制器操作中使用实例变量,以便视图可以显示每个电影:
@movies = JSON.parse(resp.body)['movies']
然后,在您的视图中,使用each
方法而不是for循环:
<% @movies.each do |movie| %>
...
<% end %>