我有可以单击下一个和上一个的图像,但是我遇到了麻烦,因为当我查看数据库中的最后一个图像(与 user_id 相关联)时,它显示路由错误:id => nil。
发生这种情况是因为该用户的图像之后没有更多数据。那么我如何设置它会旋转他们的图像,即使他们到达数据库中的最后一张图像(如果下一张),反之亦然,如果上一张。
这是在我的模型中
def self.s_prev(img)
first(:conditions => ["created_at < ?", img.created_at], :order => "created_at desc")
end
def self.s_next(img)
first(:conditions => ["created_at > ?", img.created_at], :order => "created_at asc")
end
这些是我的链接
<%= link_to "Previous", user_image_path(@image.user_id, @user.images.s_prev(@image)) if user_image_path(@image.user_id, @user.styles.s_prev(@image)) %>
<%= link_to "Next", user_image_path(@image.user_id, @user.images.s_next(@image)) if user_image_path(@image.user_id, @user.images.s_next(@image)) %>
出于某种原因,显然 if 语句对我没有帮助
假设图像表有这些数据库ID:
id user_id
1 14
2 14
3 14
4 15
所以说如果我在这个页面上:localhost:3000/users/14/images/2
该页面将显示,并且链接将显示,但是当我单击下一步时,我会收到一个错误,因为没有 user_id => 15 和 id => 4,下一个按钮正在尝试获取localhost:3000/users/14/images/4
页面...users/14/images/3
那么如何避免这个问题,只显示与用户关联的下一个/上一个链接?