Рельсы 3 - оставайтесь на странице после отправки формы ajax, но покажите "flash"
Я использую Rails 3, и у меня есть форма ajax (то есть:remote => true), которая выполняет действие "вставка" на моем контроллере.
Я хочу, чтобы пользователь оставался на странице индекса, но мог отображать флеш-сообщения, установленные действием "вставить" в контроллере.
В настоящее время мое действие "вставка" делает что-то вроде:
def insert
begin
# perform insert of stuff
flash[:success] = "Successfully..."
rescue
flash[:error] = "failed ..."
end
render :nothing => true
end
Это позволяет отправлять форму (на index.html.erb) и удерживает пользователя на этой странице, но флэш-сообщения не отображаются. Как я могу получить флеш-сообщения? (угадаю, что это связано с рендером: ничего такого, но без этого я получаю ошибки "отсутствующего шаблона" в журнале сервера).
1 ответ
Вам понадобится Javascript респондент:
def insert
begin
# perform insert of stuff
flash[:success] = "Successfully..."
rescue
flash[:error] = "failed ..."
end
end
# insert.js.erb
$('#flash').html(<%= flash[:notice].to_json %>);
Использование flash для отображения сообщений об ошибках формы, безусловно, нерегулярное поведение. Вам лучше обновить элемент в форме сообщением об ошибке или заменить форму в целом.