Я использую modalbox для модального окна для отправки форм, которые я изучил из этого Nettuts tutorial .Прямо сейчас это работает при создании нового клиента в моей модели просто отлично, даже когда есть ошибка в форме - это позволяет мне оставаться в модалбоксе до тех пор, пока ошибка не будет исправлена.Я хотел бы также использовать его для редактирования клиента.Для этого почти все работает, кроме случаев, когда форма редактирования клиента выдает ошибку.Вместо того чтобы оставаться в окне modalbox, как при добавлении нового клиента, оно обновляется на другой странице, чтобы заполнить форму.Вот что у меня есть для новой работающей клиентской функции:
На мой взгляд:
<%= link_to 'New Client', new_client_path, :id => 'newclient-link' %>
В моем ClientsController:
def create
@client = Client.new(params[:client])
respond_to do |format|
if @client.save
format.js { render :redirect} #modal form redirection (redirect.js.erb)
format.html { redirect_to(@clients, :notice => 'Client was successfully created.') }
format.xml { render :xml => @client, :status => :created, :location => @client }
else
format.html { render :new }
format.js
format.xml { render :xml => @client.errors, :status => :unprocessable_entity }
end
end
end
Это вфайл application.js:
document.observe('dom:loaded', function() {
$('newclient-link').observe('click', function(event) {
event.stop();
Modalbox.show(this.href,
{title: 'Add New Client',
width: 500,
afterLoad: function() {
$('new_client').observe('submit', function(event) {
event.stop();
this.request();
})
}}
);
});
})
И, наконец, это файл create.js.erb, который должен сохранять форму внутри модалбокса:
$('MB_content').update("<%= escape_javascript(render :partial => 'form') %>");
Modalbox.resizeToContent();
$('new_clients').observe('submit', function(event) {
event.stop();
this.request();
});
Теперь, вставив все это для репликации для метода редактирования, я продублировал jquery в файле application.js и заменил «newclient-link» на «editclient-link», чтобы он соответствовал идентификатору link_to в моей ссылке для редактированияи в значительной степени реплицировал код для метода create в контроллере и поместил его в метод update ... Однако, я думаю, что именно в этом проблема.Похоже, что решение должно быть простым и в контроллере, где должен вызываться ajax, чтобы позволить мне обновить форму в modalbox даже после выдачи ошибки, как это происходит с новой клиентской ссылкой.
Anyмысли?