Comment puis-je ajouter des paramètres forts à mon contrôleur en utilisant un fichier concerné?Comment puis-je ajouter des paramètres forts à mon contrôleur en utilisant un fichier concerné?
Disons que je :name, :age, :sex
les paramètres qui sont utilisés par plusieurs contrôleurs, mon idée est de créer un module de préoccupation où je stocke ces common_params
et les ajouter aux paramètres autorisés que j'essaie vaguement de faire ici-bas.
Contrôleur
class PersonController < ApplicationController
include CommonHelper
def update
@person.create(person_params)
end
private
def person_params
params.require(:person).permit(:foo, :bar, common_params)
end
end
Concern
module CommonHelper
extend ActiveSupport::Concern
def common_params
{ :name, :age, :sex }
end
end
Idéalement, je devrais obtenir le même résultat que si je faisais: permit(:foo, :bar, :name, :age, :sex)
.
Apparemment, l'ajout de '* common_params' à la fin n'est pas correct. J'obtiens l'erreur 500 et dans mon journal il indique 'l'erreur de syntaxe, inattendue *, attendant ')''. Cela n'arrive pas si c'est le premier argument de permis. –
Bizarre, avait toutes vos virgules dans une rangée? Je veux dire que ça marche clairement dans l'exemple ici ... le front de liste vs le dos de la liste finit avec la même sortie, c'est juste étrange que ça n'a pas marché pour vous –
Trouvé. J'ai eu un paramètre imbriqué 'foo: [: x,: y,: z]' et en ajoutant '* common_params' après la génération de l'erreur. Tant que c'est avant l'imbriqué c'est bien. Je ne sais pas quel est le problème. –