2011-10-29 43 views
4

我必須顯示「要做」事項的清單(西班牙文)。Rails jquery - 複選框更改Ajax調用

Checklist example

的想法是,一旦相關聯的項目的複選框被選中,標籤的文本通過(文字修飾:行通)獲得一個線和一個屬性(命名爲:完成)從數據庫得到更新。

要做到這一點,我有以下幾點:

在我觀點

<% @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 

我也設置了這一行動路線:得到「控制器/完成」

問題:

當我點擊複選框調用該函數和警報(」嗨「)得到執行,但成功函數不會和」完成「屬性永遠不會在數據庫中更新。

任何想法我做錯了什麼?你會怎麼做?

在此先感謝!

+0

試試這個:http://stackoverflow.com/questions/4869981/why-isnt-my-checkbox-change-event-triggered – telecasterrok

+0

你有沒有這樣的答案?我也有同樣的問題? – oFca

回答

1

可能有一些問題,路由,它會更好,如果控制器的資源,把你做的動作在收集:

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

而且你應該嘗試安裝Firebug,看你的Ajax調用,也許服務器只是不要以正確的方式回答。

+0

感謝您的回答Sandvich。我嘗試了你告訴我的,但沒有任何區別...也許我寫URL的方式有問題...更多的想法?謝謝! – Hans