Ruby on Rails动态上一个/下一个按钮

时间:2018-08-16 20:12:35

标签: ruby-on-rails ruby

我正在一个网站上找到索引中的“ 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 %>

0 个答案:

没有答案