2010-12-22 11 views
5

he instalado poniendo la siguiente línea en Gemfile y 'bundle install':¿alguien ha recibido acts_as_list para trabajar en rails 3?

gem 'acts_as_list', '>= 0.1.0' 

Sin embargo, cuando trato de usarlo, los resultados no son los esperados:

technician.move_to_top #works => position = 1 
technician.move_to_bottom #does not work properly; also makes position = 1 
technician.move_higher #does not work; returns nil 
technician.move_lower #does not work; also returns nil 

hace esto plug-in simplemente no funciona con los rieles 3 o me falta un paso?

aquí es el código que estoy usando:

class WorkQueue < ActiveRecord::Base 
    has_many :technicians, :order => "position" 
end 

class Technician < ActiveRecord::Base 
    belongs_to :work_queue 
    acts_as_list :scope => "work_queue_id" #I also tried using work_queue 
end 

esta es la consola:

wq = WorkQueue.new 
technician = Technician.last 
wq.technicians << technician 
+0

¿Podría ser que las posiciones no están en números consecutivos? – lulalala

+0

Enfrentando el mismo problema cuando se usa gem acts_as_lists https://github.com/swanandp/acts_as_list. ¿Has encontrado cómo resolverlo? Estoy usando ** Rails 3.2.2 ** –

Respuesta

0
+0

He leído eso y todos los demás que pude encontrar, pero ninguno de ellos podría hacerlo funcionar correctamente. ¿Lo estás usando? –

+0

por qué estás especificando la versión. Creo que quieres la más reciente para rails3, que es 0.1.2 – zsalzbank

+0

, la versión actual instalada es 0.1.2. ¿Es la forma en que estoy construyendo la lista? wq.technicians << técnico –

9

no uso "acts- como una "gema" porque esta gema no se actualiza por un largo tiempo.

Prueba esto:

rails plugin install git://github.com/swanandp/acts_as_list.git 
+0

https://github.com/swanandp/acts_as_list –

+1

Puede usar la gema 'acts_as_list'. – Swanand

3

acts_as_list 0.2.0 está trabajando para mí en los carriles 3.2.11 sobre el Ruby 1.9.3. Sin embargo, la sintaxis < < para agregar Tareas causa problemas. Usé list.tasks.create() en su lugar.

Aquí es una prueba de muestra:

test "acts_as_list methods" do 
    list = ToDoList.create(description: 'To Do List 1') 

    task1 = list.tasks.create(description: 'Task 1') 
    task2 = list.tasks.create(description: 'Task 2') 
    task3 = list.tasks.create(description: 'Task 3') 

    assert_equal 3, list.tasks.count 
    assert_equal task1.id, list.tasks.order(:position).first.id 
    assert_equal task3.id, list.tasks.order(:position).last.id 

    # Move the 1st item to the bottom. The 2nd item should move into 1st 
    list.tasks.first.move_to_bottom 

    assert_equal 3, list.tasks.count 
    assert_equal task2.id, list.tasks.order(:position).first.id 
    assert_equal task1.id, list.tasks.order(:position).last.id 
end 

Al crear una nueva tarea no relacionada con un to_do_list, acts_as_list asignará una posición con ámbito en contra to_do_list_id == nil. Más tarde, al agregar una tarea existente a una lista_de_do con < <, no se actualiza la posición de la tarea, por lo que act_as_lista se confunde con las posiciones.

Revise su test.log para ver las declaraciones SQL generadas por acts_as_list para obtener una idea clara de lo que está sucediendo en su aplicación en particular.

Dado que parece que sus técnicos están asignados después de que se crean las tareas work_queue, es posible que deba configurar o recalcular manualmente las posiciones después de llamar al '< <'. También podría considerar mover act_as_list a su modelo TechnicianWorkQueue, por lo que acts_as_list solo se invoca al crear la relación entre Technician y WorkQueue.

Cuestiones relacionadas