rails redirect_to - при указании action параметр notice передается как GET-параметр
В контроллере Users (сгенерированном generate scaffold_controller) в методе Update есть такой стандартный код:
format.html { redirect_to @user, notice: 'User was successfully updated.' }
Как и положено, происходит редирект и на странице отображается сообщение из параметра notice Мне надо сделать редирект на другой action, поэтому я изменил код так:
format.html { redirect_to action: 'index', notice: 'User was successfully updated.' }
В этом случае редирект происходит на нужную страницу, но notice отображается как GET-параметр в url. Например, /users?notice=User+was+successfully+updated. Сообщения на странице нет. ВОПРОС: подскажите, как передать настроить редирект на нужный action и при этом notice работал корректно. Важно редиректить именно указывая action, так как у меня два контроллера для одной модели и стандартные хелперы ведут на actions другого контроллера.
Ответы (1 шт):
redirect_to принимает два параметра, и первый из них может быть практически чем угодно (хэшом, сущностью, строкой или блоком), а второй - только хэшом. В вашей нотации метод воспринимает оба параметра как хэш и на их основании строит ссылку для редиректа через url_for. Если вы добавите к этой нотации границы первого хэша, то всё заработает.
format.html {
redirect_to({action: 'index'}, notice: 'User was successfully updated.')
}
Но вообще можно воспользоваться и хелпером, в другом вашем вопросе я чуть подробнее ответила про них
format.html { redirect_to admin_users_path, notice: 'User was successfully updated.' }