我正在创建用户相册应用程序。用户可以将许多图片上传到他们的相册,我使用nested_forms
将图片上传到相册。
在我看来,当用户看到属于相册的图片时,我想要显示 X(total_number_of_images)。
例如:如果相册中有 12 图像且用户在该相册中看到第3张图片,那么 3 of 12 当他们点击 next 时,它会变为 4 of 12 等。
我怎样才能让它发挥作用?我是否需要在column
- db (如何添加排序顺序)中添加images
,还是有其他方法可以这样做?
这是我迄今为止所做的事情:
我在sort_order
- db中添加了images
列并执行此操作:
class Image < ActiveRecord::Base
after_create :previous_slide
@slide = user.images.order("id DESC")
@slide.find_each do |slide|
slide.increment!(:sort_order, + 1)
end
end
这实际上会增加sort_order column
的增量,但顺序错误,因为order
总是id ASC
,无论我自己添加了什么。
我明白了:
id sort
1 4
2 3
3 2
4 1
必须是:
id sort
1 1
2 2
3 3
4 4
正如你可以看到错误的订单。
答案 0 :(得分:0)
我认为此代码有助于解决您的问题
class ImageController < ApplicationController
helper_method :sort_column, :sort_direction
def index
@slide = User.images.order(sort_column + " " + sort_direction)
end
private
def sort_column
User.images.include?(params[:sort]) ? params[:sort] : "name"
end
def sort_direction
%w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
end
end
Inapplication_helper.rb
def sortable(column, title = nil)
title ||= column.titleize
css_class = column == sort_column ? "current #{sort_direction}" : nil
direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"
link_to title, {:sort => column, :direction => direction}, {:class => css_class}
end