显示随机数据库项目以查看 – Rails

我已经研究了这个问题的答案了一段时间,但无法弄明白。 我正在尝试构建一个显示数据库中随机项的视图(我最终将通过按钮单击进行未来的实现)。 我不知道什么是错的。

我有一个名为Answers的脚手架,只显示文字。 在我的Answers Controller中,我构建了一个名为random的自定义方法:

def index @answers = Answer.all end def show end def random # @randitem = @items[rand(items.count)] @randanswer = Answer.random_answer end 

在我的模特中:

  class Answer < ActiveRecord::Base def self.random_answer Answer.order("RAND()").first end end 

最后,在我的观点/ random.html.erb中:

   

文件夹截图: 在此处输入图像描述

我只是以我的智慧结束,这令人沮丧,因为我觉得这是一个非常简单的问题。 任何建议或有用的资源将不胜感激。

只是,找到偏移量

 # Rails 4 def self.random_answer offset = rand(Answer.count) Answer.offset(offset).first end # Rails 3 def self.random_answer offset = rand(Answer.count) Answer.first(:offset => offset) end 

我希望它有所帮助

编辑:

由于Answer.order("RAND()").first适用于MySQL,你也可以使用Answer.order("RANDOM()").first使用PostgreSQL,或者使用偏移你可以放心地使用它。

在我看来,一种更简单的方法是使用Ruby的示例方法:

 def self.random_answer Answer.all.sample end 

要么

 def self.random_answer Answer.order(:column_name).sample end 

更好的是,我会消除你的模型的random_answer方法,并将AnswersController方法定义为:

 def random @randanswer = Answer.all.sample end 

Ruby Doc参考: http : //www.ruby-doc.org/core-2.1.5/Array.html#method-i-sample