Я получил сообщение AbstractController :: DoubleRenderError in Admin :: AdminsController # update
Рендеринг и / или перенаправление вызывались несколько раз в этом действии , Обратите внимание, что вы можете вызывать только перенаправление render или не более одного раза за действие. Также обратите внимание, что ни перенаправление, ни рендеринг не прекращают выполнение действия, поэтому, если вы хотите выйти из действия после перенаправления, вам нужно сделать что-то вроде «redirect_to (...) и вернуть»
. redirect_to(...)
и return
не помогли: (
Как решить эту проблему? Помогите мне, пожалуйста? Я хочу показать сообщение об ошибке fla sh и не обновлять все данные после if check_card_enabled? If in If верните true. Спасибо!
def update_resource(object, attributes)
if check_card_enabled?
redirect_to admin_admin_path(@admin)
flash[:alert] = I18n.t('errors.messages.please_add_gateway_info')
return false
end
update_method = if attributes.first[:password] == attributes.first[:password_confirmation] &&
attributes.first[:password].present? || attributes.first[:password_confirmation].present?
:update_attributes
else
:update_without_password
end
object.send(update_method, *attributes)
end
def check_card_enabled?
@admin.card_disabled? && (params[:admin][:card_disabled] == '0') && @admin.gateway_info.nil?
end
Anser:
before_filter :check_card_enabled, only: :update
def check_card_enabled
admin = Admin.find_by(email: params[:admin][:email])
if admin.card_disabled? && (params[:admin][:card_disabled] == '0') && admin.gateway_info.nil?
flash[:alert] = I18n.t('errors.messages.please_add_gateway_info')
redirect_to edit_admin_admin_url(admin)
end
end