Я работаю над всплывающей модальной рамкой для отправки форм.Форма должна обновляться, если есть проблемы с проверкой, но все еще внутри модального поля.Это работает для добавления новой записи, которая, я полагаю, называется: создать действие, POST.Я хочу использовать тот же модальный блок для редактирования записи.Пока я могу открыть его в модальном окне, но как только появляются ошибки, он перенаправляется на другую страницу вместо того, чтобы оставаться внутри окна.Я думаю, что ajax не вызывает действие, чтобы вернуть javascript, чтобы вернуть форму обратно в модальное поле.Как мне получить ajax для возврата javascript обратно в модальное поле для исправления формы?
Пример, вот мое: create действие:
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.js { render :redirect } #this is for modalform
format.html { redirect_to(users_url, :notice => 'User was successfully created.') }
else
format.html {render :new}
format.js # this renders the create.js.erb file to keep the form inside
end
end
end
Вот javascript, который загружает модальное поле и сохраняет форму внутри до тех пор, пока проверка не будет правильной:
document.observe('dom:loaded', function() {
$('newuser-link').observe('click', function(event) {
event.stop();
Modalbox.show(this.href,
{title: 'Create',
width: 500, #up to this point, this opens the form in the modal box
afterLoad: function() { # this afterload part is supposed to keep the form inside the modal box
$('new_user').observe('submit', function(event) {
event.stop();
this.request();
})
}}
);
});
})
А вот файл .js.erb, который вызывает действие: create, если есть ошибки проверки, чтобы сохранить форму внутри модального поля:
$('MB_content').update("<%= escape_javascript(render :partial => 'form') %>");
Modalbox.resizeToContent();
$('new_users').observe('submit', function(event) {
event.stop();
this.request();
});
То, что это работает для действия: create,как заставить это работать для действия: update, когда я хочу отредактировать запись?Опять же, основная проблема заключается в том, что при наличии ошибок проверки он перенаправляет за пределы модального поля.
ОБНОВЛЕНИЕ :
Я обнаружил, что в части javascript, которая должна держать модальное окно открытым:
$('new_user').observe('submit', function(event) {
event.stop();
this.request();
, что 'new_user'это идентификатор формы.При использовании этого для редактирования записи, идентификатор формы - edit_user_1 или edit_user_32 или любой другой пользователь, который редактируется.Поэтому я думаю, что решение, которое я не могу найти, состоит в том, как использовать класс в javascript в качестве селектора вместо идентификатора.Потому что, когда я вручную добавляю 'edit_user_1' и редактирую пользователя с идентификатором 1, это работает ... но, очевидно, не для любого другого пользователя.