【问题标题】:Rails Jquery - Checkbox change Ajax CallRails Jquery - 复选框更改 Ajax 调用
【发布时间】:2011-12-17 17:11:44
【问题描述】:

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

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

我还为此操作设置了路线:获取“控制器/完成”

问题:

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

对我做错了什么有任何想法吗?你会怎么做?

提前致谢!

【问题讨论】:

标签: jquery ruby-on-rails ajax checkbox


【解决方案1】:

路由可能有问题,如果controller是resource就更好了,把你完成的action放到collection里:

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

您还应该尝试安装Firebug 并注意您的ajax 调用,也许服务器没有以正确的方式应答。

【讨论】:

  • 感谢您的回答三明治。我试过你告诉我的,但没有任何区别......也许我写网址的方式有问题......更多想法?谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 2012-08-11
  • 2023-03-05
  • 2017-05-19
  • 2012-07-25
  • 1970-01-01
  • 2016-06-15
相关资源
最近更新 更多