【发布时间】:2013-03-22 14:08:11
【问题描述】:
我是 Rails 新手,我试图通过复选框和使用 jquery ajax 来更改布尔值:
<%- @tasks.each do |task| %>
<div class="task-wrapper">
<%= check_box_tag 'completed', task.id , task.completed, :class => "task-check" %>
<%= content_tag :span, task.task %>
<%= content_tag :span, task.deadline %>
</div>
<% end %>
和javascript:
$(".task-check").bind('change', function(){
if (this.checked){
var bool = this.checked ? 1 : 0;
$.ajax({
url: '/todos/toggle',
type: 'POST',
data: '{"task_id":"'+ this.value +'", "bool":"'+ bool +'"}'
});
}
else {
alert("no");
}
});
然后是控制器:
def toggle(task_id, bool)
@task = Todo.find_by_id(task_id)
if @task != nil?
@task.update_attributes(:completed => bool)
else
set_flash "Error, please try again"
end
end
最后是路线:
resources :todos do
member do
post 'toggle'
end
end
也尝试过收集,但给出了同样的错误。
每当我尝试它时,我都会在操作中收到 404 error。
有什么问题?
谢谢
【问题讨论】:
-
您的任务循环是否在表单内?
-
@Catfish - 不在表格之外
-
你为什么不把它放在一个表格里呢?会简单很多。然后你可以使用
f.check_box,而不是check_box_tag。 -
@Catfish - 但是我如何在没有回发的情况下更改
bool?
标签: ruby-on-rails jquery routes boolean