2011-10-29 70 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