Я зарегистрировал виджет в ActiveAdmin и хочу изменить перенаправление, которое происходит после создания нового. Так что я могу выполнять различные вещи с Javascript, я создал пользовательскую форму для создания/редактирования их таким образом, что в /admin/widget.rb
у меня есть это:Могу ли я переопределить только часть действия контроллера ActiveAdmin с помощью `super` + custom redirect?
form do |f|
render "create_or_edit_widget"
end
Я хочу изменить основные Admin::WidgetsController#create
меры для изменения, когда пользователь перенаправляется после успешного создания. Я могу заполнить остальную часть пользовательского действия, чтобы завершить это, за исключением того, что я не знаю, как обрабатывать случай, когда .save
терпит неудачу, и пользователь перенаправляется обратно в форму с сообщений об ошибках formtastic inline. Я знаю, как это сделать, если бы я хотел, чтобы нормальная форма Rails создавала список сообщений об ошибках, но не достаточно о Formtastic для копирования ее поведения. До сих пор у меня есть это:
controller do
def create
@widget = Widget.new(params[:widget])
if @widget.save
redirect_to admin_widgets_path, notice: "Successfully created Widget."
else
redirect_to :back
end
end
end
Мне было интересно, смогу ли я каким-то образом пользователь super
, а затем только изменить путь переадресации после успешного создания, вместо того, чтобы выписать все действие. Если это невозможно, может ли кто-нибудь сказать мне, где в ActiveAdmin GitHub я смогу найти стандартное действие #create
, чтобы я мог его скопировать и изменить одну часть?
Спасибо! Раньше я делал что-то подобное, но получал двойную ошибку переадресации, потому что мое перенаправление добавлялось к родительскому контроллеру, а не заменяло его перенаправление. Кажется, что добавление 'и return if resource.valid?' - это то, что исправляет его для меня. Вы знаете, почему это имеет значение? – sixty4bit