2012-06-16 4 views
0

Я создаю простой список дел, используя Rails (3.2.5).Уничтожить данные на основе имени класса HTML в Rails

Я покажу всем пользователям элементы todo в неупорядоченном списке, каждый элемент списка является самим todo. Нажав на элемент todo, пользователь отметит его как завершенное. Используя jQuery, я даю классу li класс, чтобы я мог изменить его стиль. Нажимая кнопку «Очистить завершено», я хочу, чтобы завершенные элементы были уничтожены (и удалены из базы данных).

Как это можно сделать?

NB: Я в основном пытаются воссоздать это приложение с помощью Rails: http://davidpdrsn.com/todos/

+0

Так почему дон Вы смотрите, как он это сделал? –

ответ

0

, предполагающей модель называется Todo и завершенная столбец называется completed, вы можете написать один из них в контроллере:

Todo.destroy_all(:completed => true) 
Todo.where(:completed => true).destroy_all 

Если вам нужна помощь, как управлять запрос Ajax/ответ, here есть хорошее начало (извините, я не хочу, чтобы дать вам решение, имхо, вы должны сделать свой путь самостоятельно)

Ресурсы: ActiveRecord#Base::destroy_all

+0

Как насчет части jquery? –

+0

Я бы сделал пользовательское действие контроллера, которое отвечает на js, который обновляет db, затем запускает jquery, чтобы обновить представление. – DVG

+0

@ sergio-tulentsev Извините, но решение прост, и есть много ресурсов об этом аргументе там (железнодорожное руководство, railsforzombies и т. д.); ИМХО важно, чтобы он сам нашел это решение, чтобы поправиться – mdesantis

0

Вы можете сделать это с помощью дистанционной формы Таким образом, вы бы что-то вроде

вы бы форму с remote: true для каждого элемента или вы можете иметь только одну форму и отправить его с JQuery ,

class TodoController 
    def set_completed 
    @todo = Todo.find(params[:id]) 
    @todo.done = true # you could move this to your model and do something like @todo.done! and that would save it automatically 
    @todo.save 
    end 

    def destroy_completed 
    @todos_to_delete = Todo.where(done: true)# here you could also move it to your model and do it like Todo.completed 
    @todos_to_delete.destroy_all 
    end 
end 

и вы оказали бы ответ с JS для форматирования, или даже удаление элементов в списке, как

просмотров/TODO/set_completed.erb.js

$("#item_<%= @todo.id %>").addClass("completed"); 
Смежные вопросы