2013-08-17 44 views
0

在我的Web應用程序中,用戶可以選擇某個實體的某些實例。例如在類BubbleGum,現在用戶可以通過他們的adressing標識符選擇BubbleGum某些情況下:現在如何在Rails中顯示模型的所有實例?

gums/details?show=3532667 

,另外我也想使其能夠顯示所有BubbleGums。爲此,我已介紹了使用*識別所有

gums/details?show=* 

這工作很好,至今的慣例,但往往我要補充一點的代碼來處理*選擇。有沒有一種很好的方式來表示Ruby和/或Rails中的所有實例對象?

我曾想過簡單地使用代表所有其他泡泡糖的專用符號,常量或類BubbleGum的實際對象。

+0

'BubbleGum.all'?用'BubbleGum.all.each ...'迭代它們......' – lurker

+0

我同意。控制器代碼怎麼樣,檢查是否使用了'*',然後撥打電話?我希望找到一個不那麼膽小的解決方案,所以我可以避免整個if子句。 –

+0

執行此操作的「正常」方法是僅使用另一個路由來執行所有操作的列表(索引),而不是顯示。什麼是激勵'*'方法?但是,是的,在'show'的控制器中,您可以查找'params [:show]''*'的值。你可以顯示你的控制器代碼爲你的'細節'?這將有所幫助。 (有一個名爲「show」的參數讓這個對話有點混亂......;))。 – lurker

回答

1

要在Rails應用程序中顯示所有實體,通常我們使用索引頁面。

bubble_gums_controller.rb

def index 
    @bubble_gums = BubbleGum.all 
end 

的意見/ bubble_gums/index.html.erb

<% @bubble_gums.each do |bubble_gum| %> 
    <tr> 
    <td><%= bubble_gum.name %></td> 
    <td><%= bubble_gum.price %></td> 
    </tr> 
<% end %> 

請參閱本作進一步的細節。

http://guides.rubyonrails.org/getting_started.html#listing-all-posts

1

我想你要使用的查詢字符串PARAM表演。 所以,你可以嘗試在你的牙齦控制器:

def details 
    if params[:show] == "*" 
     @bubble_gums = BubbleGum.all 
     # ... 
    elsif params[:show] 
     @bubble_gum = BubbleGum.find(params[:show]) 
     # ... 
    else 
     render :status => 404 
    end 
end 
相關問題