Я создаю флажок с вызовом Ajax для обновления атрибута... все работает нормально, но мои переадресации работают не так, как предполагалось (и flash [: уведомления]).
Если я использую chrome Network, я могу увидеть метод GET для нужной страницы, но не перенаправить что бы то ни было, а flash [: уведомления] не работают (я предполагаю, что это связано)
Итак, здесь мой код:
Контроллер:
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-уведомления и перенаправления не работают... Может кто-нибудь объяснить мне, почему?
Вы отправляете запрос js контроллеру, почему это не перенаправляет и не показывает ваше флеш-сообщение, потому что ваша страница не загружена. Для этого вам нужно изменить данные div с помощью JavaScript на успех AJAX или toggle.js.erb