我正在一个网站上找到索引中的“ dprojects”列表。使用“ Ransack” gem,我们按列标题以及顶部指定的任何其他参数(例如:分配给Bob的项目,按Due_date排序)对索引进行排序。然后,用户按下“搜索”按钮,索引将更新,以指定顺序显示指定项目。这是我的问题所在-
如果用户单击“ dproject”进行编辑,他们将看到“ next”和“ previous”按钮以转到下一个和上一个项目。但是,这些按钮始终仅按项目ID将您定向到下一个和上一个项目。
因此,如果用户对表进行排序以仅显示Bob的项目,则列出的项目可能是项目#的12、16、22和34。但是,如果单击项目12中的下一个按钮,它将引导您到项目13而不是期望的项目16。我想我必须以某种方式访问索引上正在迭代的项目数组,并告诉按钮通过id将用户定向到数组中的下一个项目,而不是下一个项目。但我不确定该如何处理。
型号代码:
def previous_dproject
Dproject.where(["id < ?", id]).last
end
def next_dproject
Dproject.where(["id > ?", id]).first
end
控制器代码:
def index
params[:q].reject { |_, v| v.blank? } if params[:q]
@q = Dproject.ransack(params[:q])
@dprojects = @q.result.includes(:school)
respond_with(@dprojects)
end
def edit
@dproject = Dproject.find(params[:id])
@options = School.order(:name).where.not(school_type_id: nil).
collect do |s|
[s.name, s.id]
end
end
查看:
<%= link_to("Previous Project", @dproject.previous_dproject) if @dproject.previous_dproject %> |
<%= link_to("Next Project", @dproject.next_dproject) if @dproject.next_dproject %>