Dans mon contrôleur de rails, je dois vérifier après avoir obtenu @group
avec before_action
que ce groupe n'est pas système.Refactoring rendu multiple dans le contrôleur
Mais j'ai beaucoup de répétition dans mon contrôleur. J'ai essayé de se transformer en une méthode distincte mais je reçois le classique:
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".
Voici une partie de mon code sans la méthode séparée qui me donne l'erreur.
def destroy
if @group.is_system?
render json: { errors: 'You can\'t delete a group system' }, status: 403
return
end
...
end
def update
if params[:group] && !params[:group].empty?
if @group.is_system?
render json: { errors: 'You can\'t edit a group system' }, status: 403
return
end
...
else
render json: { errors: 'Missing correct parameters' }, status: :unprocessable_entity
end
end
.....
Veuillez ajouter la partie 'callback ('before_action')', pas très claire de ce que vous faites. – cqcn1991
Je confirme que vous devriez ajouter le 'before_action' que vous avez utilisé puisque je ne vois pas pourquoi vous auriez le message d'erreur:' Render et/ou rediriger ont été appelés plusieurs fois dans cette action. Veuillez noter que vous ne pouvez appeler que render OU rediriger, et au plus une fois par action. Notez également que ni rediriger ni rendre terminer l'exécution de l'action, donc si vous voulez quitter une action après la redirection, vous devez faire quelque chose comme "redirect_to (...) et retour" ' – apneadiving
mon before_action seulement trouver commencer @ group = current_store.groups.find (params [: group_id]) sauvetage ActiveRecord :: RecordNotFound render_404 return fin – Mio