8
votes

Rails 3 Admin Active Ajouter une valeur prédéfinie à un nouvel enregistrement

J'ai essayé de le faire à partir du contrôleur et du contrôleur de remplacement d'administrateur actif et je ne peux pas le faire fonctionner.

Un utilisateur crée un site Web. Current_user a un attribut d'identification Le site Web a un attribut user_id

Alors, lorsque je crée un nouveau site Web, je souhaite ajouter l'actuel_user.id dans le site web.user_id. Je ne peux pas.

Tout le monde sache comment?

En ce moment, j'en ai besoin sur les actions nouvelles / Créer, mais j'aurai probablement besoin de cela sur les actions d'édition / mise à jour également.


0 commentaires

3 Réponses :


12
votes

Cela semble fonctionner pour moi: xxx

Vous devriez pouvoir remplacer les autres actions de contrôleur de la même manière.


0 commentaires

4
votes

Vous devez ajouter une méthode «nouvelle» au contrôleur. La méthode «nouvelle» crée un objet de site Web vide qui sera transmis au formulaire. La méthode «nouvelle» par défaut crée simplement un objet @website vide. Votre «nouvelle» méthode doit créer l'objet vide, puis initialiser la valeur de l'utilisateur à l'utilisateur actuel:

  ActiveAdmin.register Website do

  controller do
    # Custom new method
    def new
      @website = Website.new
      @website.user = current_user
      #set any other values you might want to initialize
    end
  end


1 commentaires

N'oubliez pas la définition "Controller", je l'ai vue dans cette réponse.



11
votes
ActiveAdmin.register Model do

  # also look in to before_create if hidden on form
  before_build do |record|
    record.user = current_user
  end

end
See https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/resource_dsl.rb#L156

0 commentaires