У меня есть форма с remote: true
. Когда форма отправлена, я хочу ответить js
, которая выводит сообщения об ошибках, если запись была недействительной, но когда она сохраняется, я хочу перезагрузить страницу, поэтому я использую для этого location.reload()
. Тем не менее, я назначаю значение flash[:notice]
, если запись была сохранена, но я теряю ее после выполнения location.reload()
. Есть ли способ, которым я могу выполнять свои флеш-сообщения после location.reload()
. Если нет, то каковы мои альтернативы? Благодаря!Потеря значения вспышки после location.reload()
0
A
ответ
0
Вы теряете его, потому что перезагружаете страницу.
Зачем вам нужно перезагружать? Если показать новую запись, вы можете просто создать файл create.js.erb, который добавляет или добавляет новую запись.
1
Я думаю, вы не можете. Один из вариантов:
Вместо location.reload() вы можете перенаправить обратно с некоторыми дополнительными параметрами URL.
Например:
В контроллере:
# it's the same like location.reload() but adding 'status=success' extra parameter to url
...
render js: "window.location = updateQueryStringParameter('#{request.referer}', 'status', 'success');"
...
JQuery:
function updateQueryStringParameter(uri, key, value) {
var re = new RegExp("([?|&])" + key + "=.*?(&|$)", "i");
separator = uri.indexOf('?') !== -1 ? "&" : "?";
if (uri.match(re)) {
return uri.replace(re, '$1' + key + "=" + value + '$2');
}
else {
return uri + separator + key + "=" + value;
}
}
Затем вы можете добавить фильтр для установки вспышки сообщение в зависимости от параметра состояния:
class ApplicationController < ActionController::Base
...
before_filter :check_status
...
def check_status
if params[:status]
if params[:status] == 'sucess'
flash[:notice] = "Success !!! Congratulations !!!"
else
...
end
redirect_to url_for(params.except(:status)) # take away status parameter from url (if you wish)
end
end
Возможно, лучший способ - фильтровать параметр статуса в промежуточном программном обеспечении или в ограничениях маршрутов вместо контроллера.
Смежные вопросы
- 1. Rails: Потеря вспышки/ошибки из встроенной формы после redirect_to
- 2. Утечка памяти после location.reload
- 3. ЗАСЕДАНИЕ потеряно после location.reload()
- 4. Как указать уведомление после location.reload();
- 5. Потеря поля делегированного значения
- 6. Потеря значения аргумента
- 7. Переменная потеря сохраненного значения
- 8. Потеря значения указателя
- 9. Остановить перезагрузку страницы после location.reload(); был назван
- 10. Прокрутка к определенному div после использования location.reload()
- 11. Джанго вид не делает правильно после location.reload()
- 12. Потеря сессии после Postback
- 13. Потеря управления после fork()
- 14. Потеря выбора после мутации
- 15. Значения ввода формы не остаются после сообщения об ошибке вспышки
- 16. Функции перезапуска вспышки после завершения
- 17. JQUERY + location.reload() callback
- 18. Windows.history.back() + location.reload() jquery
- 19. location.reload() не работает хорошо
- 20. Потеря данных ViewModel после POST
- 21. Потеря XML-структуры после XSL
- 22. потеря данных EBS после перезагрузки
- 23. Потеря содержимого NSArray после ViewDidLoad
- 24. Потеря переменных сеанса после перенаправления
- 25. позиция: относительная потеря после перевода3d
- 26. Потеря данных iOS после обновления
- 27. Потеря информации уведомления после перезагрузки
- 28. Потеря контекста после Suspend-Workflow
- 29. Потеря данных статических атрибутов после onActivityResult
- 30. Замедлить location.reload() в jQuery?