我必须显示“待办事项”的清单(西班牙文)。
这个想法是,一旦检查了与项目相关联的复选框,标签的文本就会通过(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”属性永远不会在数据库中更新。
关于我做错了什么的任何想法?你会怎么做?
提前致谢!
答案 0 :(得分:1)
路由可能存在一些问题,如果控制器是资源,将完成的操作放入集合中会更好:
resources :controller do
collection do
post 'done' (or get 'done')
end
end
另外你应该尝试安装Firebug并注意你的ajax呼叫,也许服务器只是不以正确的方式回答。