2012-02-24 64 views
1

在進行像塊:得到紅寶石塊特定元素,Rails應用程序

<% @user.favoured_user.each do |user| %> 

    <li><%= user.name %></li> 

<% end %> 

隨着favoured_user方法返回5個用戶的限制,我將如何處理該塊,這樣即使只有3用戶可用,我仍然可以返回5個元素?

我猜想一個幫手會進來玩,也許'第一,第二,第三等'數組方法,但我想不出如何編寫它。

任何幫助?

回答

2

你可以試試這個,

<% 5.times do |i| %> 
    <li> <%= @user.favoured_user[i].try(:name) %> </li> 
<% end %> 
+0

只顯示五個用戶中的一個,然後顯示4個空白li元素? – Darcbar 2012-02-24 19:53:43

+0

它應該按原樣運行,是您的@ user.favoured_user生成一個5的數組? – 2012-02-24 20:07:33

+0

是的,它正在生成數組作爲我的第一篇文章中的方法正常工作,所做的更改仍然只返回第一個用戶。 – Darcbar 2012-02-24 20:15:02

1

您可以使用in_groups_of

像:

<% @user.favoured_user.in_groups_of(5).each do |favored_user| %> 
    <% favored_user.each do |user| %> 
    <li><%= user.try(:name) %></li> 
    <% end %> 
<% end %> 

第3個用戶會通過,而最後兩個參賽作品將是零

+0

'in_groups_of'產生一個數組數組,所以在你的例子中'user'不會是一個數組? – 2012-02-24 19:22:31

+0

你的權利,上面做了小修改。 – 2012-02-24 20:13:56

+0

s /你/你/ :)你也可以在這種情況下使用'in_groups_of(5).first.each',因爲'favoured_user'指定最多返回5個。 – 2012-02-24 20:27:31