2016-04-03 8 views
0

Ich habe ein Resume-Modell und ein Bildungsmodell. Bildung gehört_zur Fortführung und Fortsetzung von has_many educations. Ich verwende derzeit ein Formular in der show.html.erb Ansicht von Resume, um Daten für Ausbildungen einzugeben, nur um sicherzustellen, dass es funktioniert.Speichern geschachtelter Daten, bevor dem Eltern eine ID zugewiesen wurde

In meiner routes.rb Datei ich habe:

resources :resumes do 
    resources :educations 
end 

In meiner educations_controller.rb Datei, die ich dieses:

def create 
    @resume = Resume.find(params[:resume_id]) 
    @education = @resume.educations.build(education_params) 

    respond_to do |format| 
     if @education.save 
     format.html { redirect_to @resume, notice: 'Education was successfully created.' } 
     format.json { render :show, status: :created, location: @education } 
     else 
     format.html { render :new } 
     format.json { render json: @education.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

Dies ermöglicht es mir, in meinem views/resumes/show.html.erb folgendes haben:

<%= form_for [@resume,Education.new] do |f| %> 
    <div class="field"> 
    <%= f.label :sectionTitle %><br> 
    <%= f.text_field :sectionTitle %> 
    </div> 
    <div class="field"> 
    <%= f.label :completed %><br> 
    <%= f.date_select :completed %> 
    </div> 
    <div class="field"> 
    <%= f.label :degree %><br> 
    <%= f.text_field :degree %> 
    </div> 
    <div class="field"> 
    <%= f.label :school %><br> 
    <%= f.text_field :school %> 
    </div> 
    <div class="field"> 
    <%= f.label :summary %><br> 
    <%= f.text_area :summary %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

Dies funktioniert derzeit und ermöglicht es mir, zu en mehrere Ausbildungen pro Lebenslauf.

Das Problem ist, Ich muss zuerst den Lebenslaufeintrag erstellen, bevor ein Bildungseintrag erstellt wird, da der Bildungseintrag von der resume_id-Ganzzahl abhängt.

Wie kann ich meinen Code neu strukturieren, so dass ich mehrere Bildungseinträge für einen bestimmten Lebenslauf erstellen kann, der noch keine ID hat, so dass im Wesentlichen beim Senden der Lebenslauf eine ID zugewiesen wird dann alle nachfolgenden Ausbildungen beigefügt werden die angegebene resume_id und ihre eigene Bildungs-ID gegeben?

Ich vermute, ich werde wahrscheinlich Javascript verwenden, das ist in Ordnung, aber trotzdem bin ich nicht sicher, was zu tun ist, sobald die Standardformularaktion abzufangen.

+0

Sie wollen Lebenslauf und Ausbildungen in Lebenslauf # create-Methode mit verschachtelter Form rechts schaffen? –

+0

Ja, obwohl eine verschachtelte Form nicht das ist, was ich derzeit implementiert habe, könnte ich es zum Laufen bringen. Allerdings wäre ich mir nicht sicher, wie ich mehr als eine Ausbildung pro Lebenslauf erstellen könnte. Gedanken? Danke für Ihre Antwort. – tfer77

+0

Wie möchtest du eine oder mehrere Ausbildungen unter jedem Lebenslauf gestalten? – 7urkm3n

Antwort

0

Dies ist nur ein kleines Beispiel, aber es funktioniert völlig in Ordnung.

In routes.rb

post 'add_resume_education' => 'resumes#twince' 

In resumes_controller.rb, in Ihrem Fall. Verwenden Sie Ihre eigenen MODEL wie Lebenslauf und Bildung und ändern Sie die Params auch.

def twince 
    resume = Resume.create!(title: params[:data][:category_title]) 
    post = resume.educations.create!(sectionTitle: params[:data][:educations][:sectionTitle]) 
    redirect_to :back, notice: 'Yeah Created' 
end 

in HTML-Seite:

<%= form_for :data, url: add_resume_education_path do |f| %> 

    <div class="field"> 
    <%= f.label :category_title %> 
    <%= f.text_field :category_title %> 
    </div> 
<br> 
    <div class="field"> 
    <%= f.fields_for :educations do |edu| %> 
    <div class="field"> 
     <%= edu.label :sectionTitle %><br> 
     <%= edu.text_field :sectionTitle %> 
    </div> 
    <% end %> 
    </div> 

    <br> 
    <%= f.submit 'create' %> 
<% end %> 

Auch hier ziemlich gute Quelle, Nested Form

+0

Danke dafür.habe in den letzten paar Stunden damit gearbeitet und es scheint, dass die Ausbildungen erstellt werden, aber nicht mit dem Lebenslauf verbunden sind. Ich werde versuchen, Dinge zu versuchen. Ich poste zurück, sobald ich eine Lösung gefunden habe. – tfer77

+0

Mach einfach was ich getan habe, es wird alles perfekt funktionieren. Sein sipmle. – 7urkm3n

+0

@ tfer77 hast du irgendwelche bestätigungen? – 7urkm3n

Verwandte Themen