Активный администратор — флэш-сообщения не отображаются на странице

#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 отображает свои уведомления / предупреждения.