2016-06-03 2 views
0

Я создаю альбом пользователей . Пользователь может загружать много изображений в свой альбом, и я использую nested_forms для загрузки изображений в альбом.Ruby on Rails - Добавление порядка сортировки к изображениям альбомов

На мой взгляд, когда пользователь видит образы, принадлежащие альбому, я хочу показать X of (total_number_of_images).

Для экс: если альбом имеет изображений и пользователь видит 3rd изображение в этом альбоме, было бы 3 из 12 и при нажатии на следующем он изменится на и т.д.

Пожалуйста, смотрите вложение enter image description here

Как я могу получить это вр к? Нужно ли добавить column в images -db (как добавить порядок сортировки) или есть другие способы сделать это?

Это то, что я сделал до сих пор: я добавил sort_order колонку в images -db и делает это:

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 

Как вы можете видеть его на неправильном порядке.

+1

Что вы сделали до сих пор? Как выглядит ваш контроллер и ваше мнение? – spickermann

+0

Да, порядок sord зависит от настроек пользователя, тогда да, он должен быть добавлен как столбец настроек в db. –

+0

См. Мое новое редактирование. Я добавил коды, которые я сделал до сих пор. – Rubioli

ответ

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 
+0

Спасибо, мне нужно добавить любой столбец в мой db? – Rubioli

Смежные вопросы