2012-04-15 8 views
1

Entschuldigung für die einfache Frage.Wie kann ich eine Account-Ressource mit Standardparametern gleichzeitig mit dem Erstellen einer Benutzerressource erstellen?

Ich habe Ressourcen verschachtelt

resources :users do 
    resources :accounts 
end 

und ich möchte ein Konto für einen neuen Benutzer haben, im Hintergrund erstellen, wenn ein Benutzer erstellt wird.

Ich versuchte

Usercontroller

def create 
    @user = User.new(params[:user]) 
    @account = Account.new(params[:account]) 
end 

form_for Benutzer

<%= form_for([@user, @account]) do |f| %> 
. . . 
<%= f.submit %> 

Aber ich habe diesen Fehler

No route matches {:action=>"new", :controller=>"accounts"} 

Ich möchte auch Standarddaten auf dem Konto übergeben. "z.B. balance_in_cents => 0, etc"

Danke für jede Hilfe, die Sie zur Verfügung stellen können.

Antwort

0

Wenn Ihr Benutzer has_many accounts hat, sollten Sie in Ihrer create-Methode in der Steuerung @account = @user.accounts.build haben. Dies wird dann ein Konto für diesen Benutzer erstellen.

Diese railscast ist sehr nützlich für verschachtelte Formulare und die Schienen Anleitung für Assoziationen ist here.

+0

Putting in Ihre Lösung Ich habe: _Keine Verbindung für Name 'Benutzer gefunden. Wurde es bereits definiert? _ – ajbraus

+0

Hinzufügen ** @ account = @ user.accounts.create ** Der Fehler, den ich jetzt bekommen ist, dass _der Eltern (@user) muss vor dem Aufruf von create auf dem Konto gespeichert werden. _ – ajbraus

+0

In Ihr Benutzermodell Sie müssen has_many accounts haben In Ihrem Account-Modell müssen Sie gehören zu Benutzer – Edward

0

Ihr form_for generiert nicht die richtige Route. Es wird oft verwirrt über die HTTP-Methode. Was Sie brauchen, ist

<%= form_for([@user, @account], :url => users_path, :method => :post) do |form| %>