在我的申请中,我有Post
& Slide
模型。 post has many slides
& slide belongs_to post
。
我的幻灯片中的所有每个都有一张图片(我使用carrierwave gem
进行上传),但目前我的一些帖子没有&#39 ;有图像。
我试图抓住每个帖子的第一张幻灯片,并在seed
的帮助下将其图片上传到帖子。
这是我在seeds.rb
中尝试过的:
posts = Post.all.where(image: nil)
posts.each do |post|
slide = Slide.where(post_id: post).order('created_at DESC').first
post.update(remote_image_url: slide.image_url(:thumb_huge))
end
和的
posts = Post.all.where(image: nil)
posts.each do |post|
slide = Slide.where(post_id: post).order('created_at DESC').first
post.update(remote_image_url: "http://mywebsite.com/uploads/slide/image/#{slide}/#{slide.image}")
end
当我运行时,我得到:NoMethodError: undefined method image' for nil:NilClass
为什么我NoMethodError
获得image
,我该如何解决?
答案 0 :(得分:0)
听起来你post
没有任何幻灯片,所以
Slide.where(post_id: post).order('created_at DESC').first
正在返回nil
。
只需检查slide
是否存在即可解决问题。
posts.each do |post|
slide = Slide.where(post_id: post).order('created_at DESC').first
if slide.present?
post.update(remote_image_url: "http://mywebsite.com/uploads/slide/image/#{slide}/#{slide.image}")
end
end
但是,如果您正确设置了belongs_to
和has_many
关系,可以稍微简化一下:
posts.each do |post|
if post.slides.any?
slide = post.slides.first
post.update(remote_image_url: "http://mywebsite.com/uploads/slide/image/#{slide}/#{slide.image}")
end
end
或者您可以更进一步,只选择首先至少有一张幻灯片的帖子:
posts = Post.joins(:slides).uniq
posts.each do |post|
slide = post.slides.first
post.update(remote_image_url: "http://mywebsite.com/uploads/slide/image/#{slide}/#{slide.image}")
end
答案 1 :(得分:0)
您需要在代码中添加一个条件。
import matplotlib.pyplot as plt
##here are datas##
sample =[1,31,52,72,9,53,6,8,54,32,9,7,6,35,7,43,23,31,4,1,0,9,8,7,9,11,12,15,16,123,23,25,26,26,35,44,12,54]
##Here is the Histogram plot##
bins=[0,10 ,20,30,40,50,60]
plt.hist(sample, bins, histtype='bar', rwidth='0.8', color='m',label="sample hist")
plt.xlabel('x values')
plt.ylabel('y values')
plt.title('title line 1\ntitle line 2')
plt.legend()
plt.show()
我希望它对你有用。