接下来,组内的先前记录(有很多)

时间:2014-04-09 13:09:29

标签: ruby-on-rails-3

希望任何人都能提供帮助。我有下一个和上一个按钮工作到数据库中的下一个记录。但是每个项目都属于一个Type,希望按钮能够跳转到同一Type中的下一个记录。

模特

Project.rb
has_many :typelinks, :dependent => :destroy
has_many :types, :through => :typelinks

def self.get_previous_project(current_project)        
  Project.where("projects.id < ? ", current_project.id).order('id asc').last
end

def self.get_next_project(current_project)
  Project.where("projects.id > ? ", current_project.id).order('id asc').first
end

Type.rb
has_many :typelinks, :dependent =>:destroy
has_many :projects, :through =>:typelinks

typelink.rb
belongs_to :project
belongs_to :type

以上是项目和类型之间的关系设置。下面是项目的视图页面。如果最后或第一次记录隐藏箭头。 (CSS删除,因为我现在只需要功能)

<% unless  @project.id == Project.first.id   %>
  <span id="leftarrow" class="prev"><%= link_to image_tag('/assets/prev_notext.png') + "", Project.get_previous_project(@project) %></span>
<% end %>

<% unless  @project.id == Project.last.id   %> 
  <span id="rightarrow" class="next"><%= link_to image_tag('/assets/next_notext.png') + "", Project.get_next_project(@project) %></span>
<% end %>

摘要

这是所需功能的一个例子。

PROJECT1 项目2 项目3 Project4

的Type1 类型2

Project2和Project4属于Type2。

当在Project2的View页面上并单击下一个箭头时,它需要转到Project4 View而不是Project3。

我希望有人可以帮我解决这个问题,对不起这篇长篇文章感到抱歉。

1 个答案:

答案 0 :(得分:1)

这可能有效:

Project.joins(:types).where("projects.id < ? and types.id in (?)", current_project.id, current_project.types.map(&:id)).order('id asc').last