![](/img/trans.png)
[英]What is the best way to GET two index requests from the same model in 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.