Ruby on rails 我想显示一个随机对象

Ruby on rails 我想显示一个随机对象,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想在卡片中显示一个随机对象 我的代码返回错误消息,如: "undefined method `sample' for nil:NilClass", "undefined method `photo' for nil:NilClass", "undefined method `user' for nil:NilClass" 我不明白。你能帮我吗?你可以在conntroller中随机选择@slots集合,例如: @slots = Slot.where(id: Slot.pluck(:id).

我想在卡片中显示一个随机对象


我的代码返回错误消息,如:

"undefined method `sample' for nil:NilClass",
"undefined method `photo' for nil:NilClass",
"undefined method `user' for nil:NilClass"

我不明白。你能帮我吗?

你可以在conntroller中随机选择@slots集合,例如:

@slots = Slot.where(id: Slot.pluck(:id).sample(3))
然后在视图中直接使用

<% @slots.each do |slot| %>

在RubyonRails(ActiveRecord)中获取一个随机对象并没有很好的文档记录,但它相当容易

显而易见:从任意数组中随机选取两个对象:

@users = User.all
@users.sample(2)
这将从数据库中获取所有对象,将它们放在一个数组(@users)中,从该数组中拾取两个随机对象。如果您碰巧需要一个数组中的所有对象,这很好。如果没有,你最好选择更好的:

User.order('RANDOM()').limit(2)
这将使用随机顺序从数据库中只读取两个条目。因此,在db上比第一个命令容易得多

命令语法适用于PostgreSQL-对MySQL使用“RAND()”

有一件事需要注意,那就是默认的\u范围。如果已为obj类设置了默认范围,请改用“重新排序”:

User.reorder('RANDOM()').limit(2)

谢谢sawa的更正!这是我第一次发布到stackoverflow=)什么是
@slots
插槽的外观如何?@slots未定义(nil)。。。你从来没有设置过。我只是在我的控制器中检查,
@slot
没有定义。。。在我的控制器中,我的主方法现在的内容是:
@slots=slots.all
,但我认为这还不够。。。新的错误消息是:
uninitialized constant PagesController::Slots
aaaaaargh!我的问题是我的控制器!它被纠正了!!!多亏了你,我才能够回到问题的根源!!!