【发布时间】:2016-06-03 18:10:10
【问题描述】:
我正在创建一个带有 Ajax 调用的复选框以更新属性...一切正常,但我的重定向没有按预期工作(也没有 flash[:notices])
如果我使用 chrome 网络,我可以看到所需页面的 GET 方法,但没有任何重定向,并且 flash[:notices] 不起作用(我假设它是相关的)
这是我的代码:
控制器:
def toggle
@prato = Prato.find(params[:id])
if params[:sugestao]
@sugestao = params[:sugestao]
if @sugestao == "true" and Prato.where("sugestao = ? AND categoria_pratos_id = ?", "1" , @prato.categoria_pratos_id).count <= 2
@prato.update_attributes(:sugestao => @sugestao)
else
if @sugestao == "true" and Prato.where("sugestao = ? AND categoria_pratos_id = ?", "1" , @prato.categoria_pratos_id).count > 2
flash[:notice] = "nao"
end
end
if @sugestao == "false"
@prato.update_attributes(:sugestao => @sugestao)
end
end
if params[:menu]
if @prato.update_attributes(:menu => params[:menu])
else
end
else
if params[:ativo]
if @prato.update_attributes(:ativo => params[:ativo])
else
end
end
end
flash[:notice] = "fds"
redirect_to "/pratos/new?"
end
查看:
<%= check_box_tag 'Ativo', prato.id , prato.ativo,:class => "task-check2", :id=>"task-check2" %>
<%= check_box_tag 'Sugestão', prato.id , prato.sugestao,:class => "task-check3", :id => "task-check3" %>
Javascript
$(".task-check2").bind('change', function(){
$.ajax({
url: '/pratos/'+this.value+'/toggle',
type: 'POST',
data: {"ativo": this.checked}
});
});
$(".task-check3").bind('change', function(){
$.ajax({
url: '/pratos/'+this.value+'/toggle',
type: 'POST',
data: {"sugestao": this.checked}
});
});
路线
resources :pratos do
member do
post 'toggle'
end
end
好的,所以一切都按预期工作...问题是我想在用户激活 3 个复选框但 Flash 通知和重定向不起作用时显示一条消息...有人可以向我解释为什么吗?
【问题讨论】:
-
first.. 重定向将在服务器上发出新请求...所以 flash 将无法与重定向一起使用
-
我一直使用带有重定向的闪光灯,它工作得很好:o
标签: jquery ruby-on-rails ajax checkbox