J'ai besoin d'appeler l'action de création dans le contrôleur A, à partir du contrôleur B.
La raison est que je dois rediriger différemment lorsque j'appelle depuis le contrôleur B.
Peut-on le faire en Rails ?
J'ai besoin d'appeler l'action de création dans le contrôleur A, à partir du contrôleur B.
La raison est que je dois rediriger différemment lorsque j'appelle depuis le contrôleur B.
Peut-on le faire en Rails ?
Vous pouvez utiliser une redirection vers cette action :
redirect_to your_controller_action_url
Plus sur : Guide Rails
Pour rendre la nouvelle action :
redirect_to your_controller_action_url and return
La logique que vous présentez n'est pas MVC, donc pas Rails, compatible.
Un contrôleur rend une vue ou une redirection
Une méthode exécute du code
A partir de ces considérations, je vous conseille de créer des méthodes dans votre contrôleur et de les appeler depuis votre action.
Exemple :
def index
get_variable
end
private
def get_variable
@var = Var.all
end
Cela dit, vous pouvez faire exactement la même chose avec différents contrôleurs et invoquer une méthode du contrôleur A alors que vous êtes dans le contrôleur B.
Le vocabulaire est extrêmement important, c'est pourquoi j'insiste beaucoup.
C'est une mauvaise pratique que d'appeler une autre action du contrôleur.
Vous devez
Mon avis :
La troisième approche est celle que je faisais souvent. Je vais donc vous montrer un petit exemple.
def create
@my_obj = MyModel.new(params[:my_model])
if @my_obj.save
redirect_to params[:redirect_to] || some_default_path
end
end
Donc vous pouvez envoyer à cette action redirect_to
qui peut être le chemin de votre choix.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.