【发布时间】:2012-09-27 17:58:54
【问题描述】:
让我先说我是 Rails 新手,所以我会尽力解释这一点。作为参考,请参阅此线程,它准确地描述了发生在我身上的事情,但修复似乎不起作用。
Problems with limit method in Rails 3.2 and hash ordering
我有一个数据库,其中包含我试图按主键“id”排序的事件。我在这里尝试在可排序表列上关注 Railscast:
http://railscasts.com/episodes/228-sortable-table-columns
排序工作正常,但排序发生在整个列上,而不仅仅是“最后 50 个”。
控制器代码:
def index
@events = Event.order(sort_column + " " + sort_direction).page(params[:page]).last(50)
@events = @events.sort_by(&:id)
@events = Kaminari.paginate_array(@events).page(params[:page]).per(10)
end
def sort_column
Event.column_names.include?(params[:sort]) ? params[:sort] : "event_id"
end
def sort_direction
%w[asc desc].include?(params[:direction]) ? params[:direction] : "desc"
end
Application_helper:
def sortable(column, title = nil)
title ||= column.titleize
direction = column == sort_column && sort_direction == "desc" ? "asc" : "desc"
link_to title, :sort => sort_column, :direction => direction
end
最后,在索引视图中,我这样称呼它:
<th><%= sortable "event_id" %></th>
很抱歉,如果这个问题已经得到解答,我们将不胜感激。
编辑
感谢您的快速回复。我明白你在那里做了什么,但现在我的索引视图中由于某种原因出现异常。
undefined method `id' for #<Array:0x00000004170c10>
Extracted source (around line #25):
22: <tbody>
23: <% @events.each do |event| %>
24: <tr>
25: <td><%= link_to event.id, event_path(event) %></td>
26: <td><%= event.event_date_time_local %></td>
27: <td><%= EventType.find(id = event.event_type_id).event_type %></td>
28: <td>
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3