Rails Jquery - Checkbox更改Ajax调用

时间:2011-10-29 03:12:09

标签: jquery ruby-on-rails ajax checkbox

我必须显示“待办事项”的清单(西班牙文)。

Checklist example

这个想法是,一旦检查了与项目相关联的复选框,标签的文本就会通过(text-decoration: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

我也设置了这个动作的路线:得到“控制器/完成”

问题:

一旦我点击一个复选框,就会调用该函数并执行警报(“hi”),但是成功函数没有执行,并且“done”属性永远不会在数据库中更新。

关于我做错了什么的任何想法?你会怎么做?

提前致谢!

1 个答案:

答案 0 :(得分:1)

路由可能存在一些问题,如果控制器是资源,将完成的操作放入集合中会更好:

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

另外你应该尝试安装Firebug并注意你的ajax呼叫,也许服务器只是不以正确的方式回答。