2017-02-25 5 views
3

Ich habe eine Situation, in der ich create in activeadmin überschreiben muss. Ich fülle automatisch die Felder aus und wenn die Daten bereits existieren, sollte sie sich aktualisieren ansonsten erstellen. Hier ist meine create-Methode:So zeigen Sie Fehler in ActiveAdmin-Formularen nach dem Überschreiben der Steuerung an

def create 
     id = params[:company].dig(:id) 
     if id.present? 
     @company = Company.find(id) 
     if @company.update(permitted_params[:company]) 
      redirect_to resource_url 
      flash[:notice] = 'Company created successfully' 
     else 
      #add errors to semantic errors 
     end 
     else 
     new_permitted_params = permitted_params[:company].except(:id) 
     @company = Company.new(new_permitted_params) 
     @company.save 
     if @company.errors.any? 
      #add this to semantic errors so that activeadmin handles and displays the errors 
     end 
    end 
    end 

Ich möchte die Fehler angezeigt werden, die die Validierungen verletzen, so dass der Benutzer weiß, ob er/sie einen ungültigen Eintrag eingegeben hat.

Ich fand this, aber es sieht wie ein Workaround mehr als eine Lösung aus. Bitte hilf mir, das zu lösen.

Vielen Dank im Voraus.

Antwort

2

Ich habe eine neue HTML-Datei in Sichten mit dem Namen new.html.arb erstellt und insert_tag renderer_for(:new) darin eingefügt. Danach war alles, was ich tat

if @company.errors.any? 
    render 'new' 
end 

Ich entdeckte es durch das Standardverhalten von ActiveAdmin zu sehen. Ich hoffe, das hilft anderen Menschen, die etwas Ähnliches machen wollen. Dies ist das Ergebnis, das ich erhalte und das von mir gefordert wurde.

Fields with validation errors.

0

Ich frage mich, ob Client-Seite Logik an verschiedene URLs auf id.present je einreichen? könnte die Dinge erholsamer machen.

+0

Lassen Sie mich Ihnen erklären, warum ich das gemacht habe. Ich habe die automatische Vervollständigung in diesem Formular angewendet und setze alle Felder mit den Daten, die ich erhalte, fest. Hier kommt die Logik ins Spiel. Wenn ID gesetzt ist (was nicht wäre, wenn ich bei der automatischen Vervollständigung kein Objekt ausgewählt hätte), dann aktualisiere sonst create. – UsamaMan

Verwandte Themen