2016-09-02 7 views
1

Ich habe durch die folgenden tutorial gelesen und fanden die merkwürdige Linie:Rails Verbände: belongs_to has_many Verwirrung

feststellen, dass die Funktion erstellen so geschrieben ist, dass es eine hat seine @post bevor ein @comment zu schaffen.

Sie können die Unterstützung Controller-Code sehen:

Class CommentsController < ApplicationController 
    ---- 
    def create 
    @post = Post.find(current_post) 
    @comment = @post.comments.create(post_params) ## 'Essential stuff' 
    respond_to do |format| 
     if @comment.save 
     format.html { redirect_to action: :index, notice: 'Comment was successfully created.' } 
     format.json { render :show, status: :created, location: @comment } 
     else 
     format.html { render :new } 
     format.json { render json: @comment.errors, status: :unprocessable_entity } 
     end 
    end 
    end 
    ---- 
end 

der Tat "current_post" bedeutet, dass die Post vor dem Kommentar erstellt wurde.

Aber was, wenn ich möchte, dass beide gleichzeitig erstellt werden? Angenommen, mein USER has_many EMAILS und jeder EMAIL belongs_to ein USER. Wenn ich einen neuen Benutzer erstelle, möchte ich vielleicht ein erweiterbares Formular haben, das es dem Benutzer erlaubt, eine, zwei, drei oder zwanzig E-Mails hinzuzufügen, während er sein Konto erstellt.

Wie könnte dies getan werden?

+0

haben auch Blick auf diese - http://railscasts.com/episodes/196-nested-model-form-part-1. –

Antwort

0

Sie müssen die Verwendung verschachtelter Form in Betracht ziehen, werfen Sie einen Blick in diese gem, sehr einfach zu implementieren. Es ermöglicht dem Benutzer, mehrere E-Mails hinzuzufügen, wie erforderlich.

+0

Dieses Juwel sieht gut aus, aber ich finde es nicht sehr einfach zu implementieren, wenn man bedenkt, dass ihr Tutorial in HAML geschrieben ist .... und nicht erb. – ineedahero

+0

@ineedahero ist es ziemlich einfach, wo Sie haben = f.inputs können Sie tun <% = f.inputs tun%> –