Rails Jquery - 复选框改变 Ajax 调用

4
我需要展示一份“待办事项清单”的内容(用西班牙语)。如下图所示:

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

同时,我为此操作设置了路由:get“controller/done”

问题:

一旦我点击复选框,函数被调用并执行alert(“hi”),但成功函数未执行,“done”属性在数据库中也从未更新。

你有什么想法?你会怎么做?

提前致谢!


尝试这个:https://dev59.com/Bm445IYBdhLWcg3wapvF - telecasterrok
你找到答案了吗?我有同样的问题。 - oFca
1个回答

1

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

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

另外,您应该尝试安装Firebug并观察您的ajax调用,也许服务器没有以正确的方式回答。


谢谢你的回答,Sandvich。我尝试了你告诉我的方法,但没有任何改变...也许我写URL的方式有问题...还有其他想法吗?谢谢! - Hans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接