簡體   English   中英

從RoR模型中獲取兩個隨機元素

[英]Get two random elements from a RoR model

我正在嘗試使用RoR進行簡單的操作,而我在學習基礎知識時遇到了一些麻煩。 我最接近的背景是ASP.NET MVC,但我發現所有的RoR教程都關注rails真正擅長什么(腳手架的東西)而不是如何制作自己的動作並讓他們用參數等來做事。在ASP.NET MVC中微不足道。

目前我正試圖從模型中獲取兩個隨機元素。

我想我正在處理某種類型的ActiveRecord集合?

我已經讀過在集合/數組的某個地方有一個.rand方法,盡管其他地方認為rand只是一種獲取隨機數達到一定數量的方法。 我甚至無法使用以下代碼:

def index
    @items = Array.new(Item[0], Item[0])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @domain }
    end
end

任何可以幫助解決這個問題的東西,理想情況下有助於從ASP.NET MVC到RoR的進一步修補,我們將非常感激。

要從ActiveRecord模型中檢索兩個隨機項:

@things = Thing.all(:order => 'RANDOM()', :limit => 2)

如果您想要數據庫中的2個隨機項,請向數據庫詢問2個隨機項:

@items = Item.find(:all, :limit => 2, :order => "RANDOM()")

如果您只使用2,那么從您的系統加載所有Item是毫無意義的,這是一種浪費。

如果已經擁有從別的地方,你需要從隨機值的數組,然后Rails添加一個rand方法Array類:

@items = [my_arr.rand, my_arr.rand]

我不知道你試圖用Item[0]做什么,但是在Rails中沒有做任何有意義的事情。

你的模型是什么樣的? 我不確定你在那里用Item [0]做什么。 要隨機化您的數組,您可以執行以下操作:

@items = ["item1", "item2", "item3"].sort_by {rand}

然后你可以做@items [0]和@items [1]得到2項隨機數組。

對於params,您可以使用params哈希從查詢字符串中獲取任何表單變量或請求參數:

params[:user]

符號名稱只是查詢字符串中表單字段或參數的名稱。

如果您將其作為資源路由,Rails控制器通常包含一個或多個restful操作(索引,顯示,新建,創建,刪除,編輯,更新),但是添加自己的操作只需向控制器添加新方法,在routes.rb中路由該操作,並使用該操作的名稱創建一個視圖。

使用Mysql數據庫使用RAND()而不是RANDOM()

@items = Item.find(:all, :limit => 2, :order => "RAND()")

有關您的模型的更多信息以及您要完成的內容會有所幫助,但如果您嘗試從sqlite等數據庫中提取隨機記錄,則可以執行以下操作:

@item = Items.find(:first, :order => 'RANDOM()')

其中Items是您的模型類。 'RANDOM()'只是一個傳遞給數據庫的字符串,告訴它如何排序,所以你必須調整以匹配你正在使用的數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM