У меня есть форма Ajax структурированную следующим образом:Брус переключаться между двумя Jquery/Ajax формы без перезагрузки страницы после первого вызова Ajax
<% if @post.saved? %>
<%= render 'shared/unsave' %>
<% else %>
<%= render 'shared/save' %>
<% end %>
В application.js (оба являются одинаковыми):
$(document).ready(function(){
$('.save_form').submit(function(){
$.post($(this).attr('action'), $(this).serialize(), null, "script");
return false;
});
});
$(document).ready(function(){
$('.unsave_form').submit(function(){
$.post($(this).attr('action'), $(this).serialize(), null, "script");
return false;
});
});
Формы работают должным образом, когда щелкнули один раз, но перезагрузите страницу при повторном нажатии. Почему я не могу переключаться между двумя формами с помощью ajax?
общий/сохранить парциальное:
<%= form_for current_user.saved.build(:post_id=> post.id), :html => { :class => 'save_form'}, :remote => true do |f| %>
<div><%= f.hidden_field :post_id %></div>
<%= image_submit_tag("save-off.png", :alt => "save", :id => "save_button", :title => "Add to Saved") %>
<% end %>
общий/unsave частичный:
<%= form_for current_user.saved.find_by_post_id(post), :html => { :method => :delete, :class => 'unsave_form' }, :remote => true do |f| %>
<div><%= f.hidden_field :post_id %></div>
<%= image_submit_tag("save-on.png", :alt => "unsave", :id => "unsave_button", :title => "Remove from Saved") %>
<% end %>
Трудно сказать, не видя HTML, но несколько потенциальных проблем: 1. Вы полностью заменить форму в результате вызова AJAX, тем самым удалив обработчик события отправки. 2. В вашей «несохраненной» форме нет класса 'save_form', поэтому попытка связать обработчик событий не работает. –
Эй Энтони, я знаю, это немного задерживается, но что именно вы имеете в виду. Как можно предотвратить полную замену формы на вызов ajax? У моей несохраненной/сохраненной формы должны быть два класса (оба - сохранение и несохранение)? –