2012-02-24 32 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