希望任何人都能提供帮助。我有下一个和上一个按钮工作到数据库中的下一个记录。但是每个项目都属于一个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。
我希望有人可以帮我解决这个问题,对不起这篇长篇文章感到抱歉。
答案 0 :(得分:1)
这可能有效:
Project.joins(:types).where("projects.id < ? and types.id in (?)", current_project.id, current_project.types.map(&:id)).order('id asc').last