我必须显示“待办事项” list (西类牙语)。
这个想法是,一旦选中与某个项目关联的复选框,标签的文本就会获得一条线(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') }
});
});
});
在我的 Controller 中:
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
我还设置了此操作的路线:获取“controller/done”
问题:
一旦我单击复选框,函数就会被调用,警报(“hi”)就会被执行,但成功函数不会,并且“done”属性永远不会在数据库中更新。
我做错了什么有什么想法吗?你会怎么做?
提前致谢!
最佳答案
路由可能存在一些问题,如果 Controller 是资源会更好,将完成的操作放在集合中:
resources :controller do
collection do
post 'done' (or get 'done')
end
end
您还应该尝试安装 Firebug并注意您的 ajax 调用,也许服务器只是没有以正确的方式应答。
关于jquery - Rails Jquery - 复选框更改 Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7936764/