Rails Jquery - флажок смены Ajax Call - PullRequest
       8

Rails Jquery - флажок смены Ajax Call

4 голосов
/ 29 октября 2011

Мне нужно отобразить контрольный список вещей, которые нужно «сделать» (на испанском).

Checklist example

Идея состоит в том, что после того, как флажок, связанный с элементом, будет установлен, текст метки будет проходить через строку (text-ornament: line-through) и атрибут (с именем: done) из базы данных обновляется. *

Для этого у меня есть следующее:

В моем представлении :

<% @user_account.activities.each do |act| %>
   <div class="checklist_check">
      <%= check_box_tag 'activity_status', act.id, act.done, :class => 'activity_status' %> 
      <%= act.name %>
   </div>
<% end %>

В JavaScript :

$(function(){
    $(".activity_status").live("change", function(act_id) {
        $.ajax({
            url: "/controller/done",
            beforeSend: function() { alert("Hi") },
            data: "id="+act_id, 
            success: function() { alert('Bye') }
        });
    });
});

В моем контроллере :

def done

    @activity = Activity.find params[:id]

    if @activity.done
        @activity.update_attributes :done_by_date, false
    else 
        @activity.update_attributes :done_by_date, true
    end    
end

Также я настроил маршрут для этого действия: получить "controller / done"

Проблема:

Как только я нажимаю на флажок, вызывается функция, и запускается предупреждение («привет»), но функция успеха не выполняется, а атрибут «выполнено» никогда не обновляется в базе данных.

Есть идеи, что я делаю не так? Как бы вы это сделали?

Заранее спасибо!

1 Ответ

1 голос
/ 29 октября 2011

Могут быть некоторые проблемы с маршрутизацией, было бы лучше, если бы контроллер был ресурсом, поместите свое действие done в коллекцию:

resources :controller do
  collection do
    post 'done' (or get 'done')
  end
end

Также вам следует попробовать установить Firebug и посмотретьдля вашего AJAX-вызова, возможно, сервер просто не отвечает правильно.

...