rug*_*ert 3 ruby ruby-on-rails ruby-on-rails-3
所以我列出了我网站的所有成员,并按名称对它们进行分组,以便更好地组织列表.因此,在我看来,我的所有成员都按其成员名称的第一个字母分组,如:
B
Bakedfish
Beercan Dan
Bigmike33x
C
Cynicalassassin
ect..
Run Code Online (Sandbox Code Playgroud)
无论如何,我也想对这个列表进行分页,但是如果我使用命令,我不能将Kaminari的分页参数添加到我的控制器,因为我得到一个未定义的方法错误.
所以这不起作用:
@members = Member.all.group_by{|u| u.fullname[0].titleize}.page(params[:page]).per(18)
Run Code Online (Sandbox Code Playgroud)
我的观点看起来像这样:
<div class="content">
<%= paginate @members %>
</div>
<% @members.keys.sort.each do |starting_letter| %>
<h3>
<%= link_to starting_letter, {:action => :browse, :controller =>:members, :letter => starting_letter } %>
</h3>
<ol>
<% @members[starting_letter].each do |member| %>
<li>
<% if member.is_artist? %>
<%= link_to member.full_name, member_path(member), :class=>"artist" %>
<% else %>
<%= link_to member.full_name, member_path(member) %>
<% end %>
</li>
<% end %>
</ol>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这是我的错误消息:
NoMethodError (undefined method `page' for #<Hash:0x007f78d4bf48f8>):
app/controllers/members_controller.rb:10:in `index'
Run Code Online (Sandbox Code Playgroud)
Kaminari添加page方法ActiveRecord::Relation但Member.all.group_by返回哈希.这就是你得到这个例外的原因.
我建议在分页后进行分组,例如:
@members = Member.order(:full_name).page(params[:page]).per(18).to_a.group_by { |u| u.fullname[0].upcase }
Run Code Online (Sandbox Code Playgroud)
UPDATE
为了使用paginate帮助器,您可以分配2个变量,例如:
@paginated_members = Member.order(:full_name).page(params[:page]).per(18)
@members = @paginated_members.to_a.group_by { |u| u.fullname[0].upcase }
Run Code Online (Sandbox Code Playgroud)
并传递@paginated_members给paginate帮助者.
| 归档时间: |
|
| 查看次数: |
1763 次 |
| 最近记录: |