让我先说我是 Rails 新手,所以我将尽力解释这一点。作为参考,请参阅此线程,该线程准确描述了发生在我身上的事情,但修复似乎不起作用。
我有一个数据库,其中包含我试图按主键“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
应用程序助手:
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>