#ruby-on-rails #ruby-on-rails-3.1 #activeadmin
#ruby-on-rails #ruby-on-rails-3.1 #activeadmin
Вопрос:
Я пытаюсь отобразить уведомление после перенаправления на страницу, но оно не появляется.
Вот перенаправление —
redirect_to :action => :index, :notice => "My redirect"
Вы можете увидеть сообщение в URL-адресе, но, похоже, внутри active admin нет никакого кода для его отображения.
Есть идеи, как отобразить его внутри active admin?
Комментарии:
1. есть ли у вас: <%=flash[:notice] %> на ваш взгляд?
2. Активный администратор генерирует представления, поэтому я не знаю.
Ответ №1:
Кажется, есть какая-то проблема, которую я еще не отследил, но если вы ищете обходной путь до тех пор, это то, что я сделал:
member_action :test do
flash[:notice] = "This is a test notice!"
redirect_to :action => :index
end
Проблема, которую я вижу, заключается в том, что при вводе :notice
redirect_to
метода сообщение notice кодируется по URL и добавляется к URL
member_action :test do
redirect_to :action => :index, :notice => "This is a test notice!"
end
приводит к
/admin/model?notice=This is a test notice!
что далеко не идеально. Я заметил изменение в документации active_admin, которое включает в себя добавление {}
первого параметра redirect_to
для устранения этой проблемы, однако для меня это приводит к ошибке.
member_action :test do
redirect_to {:action => :index}, :notice => "This is a test notice!"
end
что приводит к
syntax error, unexpected tASSOC, expecting '}'
redirect_to {:action => :index}, :notice => "This...
Я опубликовал комментарий к этому конкретному запросу @ active_admin на github, и, надеюсь, у кого-то может быть другое предложение, поскольку я в тупике.
В любом случае, возможно, одно из этих решений подойдет вам. Удачи.
Комментарии:
1. flash [: notice] обходной путь сработал для меня. Я потратил час на то, чтобы разобраться с этим, пока не нашел этот ответ.
2. У вас возникли проблемы с синтаксисом ruby. Попробуйте добавить скобки:
redirect_to({action: :index}, notice: 'Whatever')
3. Использование
flash[:notice]
в действии участника не сработало для меня корректно (не исчезло бы), но вышеприведенное решение от @chrpes сработало.
Ответ №2:
Активный администратор не отображает флэш-сообщения, он считает, что они отображаются в t-макете. Когда вы запускаете active_admin: install generator, в нем упоминается, что:
$ rails g active_admin:install
...
Some setup you must do manually if you haven't yet:
...
3. Ensure you have flash messages in app/views/layouts/application.html.erb. For example:
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
Комментарии:
1. Я добавил их в свой макет, но я хочу показать флэш-сообщение в представлении, созданном активным администратором
2. вывод, на который вы ссылаетесь выше, взят из части разработки установки active_admin install. другими словами, devise рекомендует вам обновить свои макеты, включив в них поля уведомления / предупреждения. это не имеет ничего общего с тем, как active_admin отображает свои уведомления / предупреждения.