Schienen 4 - Verschachtelte form mit accepts_nested_attributes_for-controller-setup?

Ich versuche, um eine verschachtelte form mit form_for und fields_for. Nach viel recherche und Erfolg, nicht auf der Arbeit an meinem Projekt nicht mehr. Ich versuche nur, um wieder ein railscast zu sehen, was habe ich falsch gemacht.

Ich versuche, erstellen Sie das Beispiel gefunden bei http://railscasts.com/episodes/196-nested-model-form-part-1, das sollte nicht so schwer sein, da der code da ist, aber ich kann nicht verwalten, erstellen, Fragen aus der Umfrage. Hier ist mein code bis jetzt:

rails new surveysays
rails g scaffold survey name:string
rake db:migrate
rails g scaffold question survey_id:integer content:text
rake db:migrate

Ich versuche zu tun, in der exakt gleichen Reihenfolge von den Videos.
Meine Frage Modell:

class Question < ActiveRecord::Base
  belongs_to :survey
end

Meiner Umfrage Modell:

class Survey < ActiveRecord::Base
  has_many :questions, dependent: :destroy
  accepts_nested_attributes_for :questions
end

Meiner Umfrage mit verschachtelten Fragen Feldern:

<%= form_for(@survey) do |f| %>
      ...
      <div class="field">
        <%= f.label :name %><br>
        <%= f.text_field :name %>
      </div>
      <%= f.fields_for :questions do |builder| %>
        <p>
          <%= builder.label :content, "Question" %><br/>
          <%= builder.text_area :content, :row => 3 %>
        </p>
      <% end %>
      <div class="actions">
        <%= f.submit %>
      </div>
   <% end %>

Meiner Umfrage zeigen:

<p id="notice"><%= notice %></p>

<p>
  <strong>Name:</strong>
  <%= @survey.name %>
</p>

<ol>
  <% for question in @survey.questions %>
   <li><%=h question.content%></li>
  <% end %>
</ol>

<%= link_to 'Edit', edit_survey_path(@survey) %> |
<%= link_to 'Back', surveys_path %>

Und meine SurveysController:

class SurveysController < ApplicationController
 ...

  # GET /surveys/new
  def new
    @survey = Survey.new
    3.times { @survey.questions.build }
  end

 ...

  # POST /surveys
  # POST /surveys.json
  def create
    @survey = Survey.new(survey_params)

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

  ...

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_survey
       @survey = Survey.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def survey_params
       params.require(:survey).permit(:name)
    end
end

Als bis min 5:34 und das ist, wenn es nicht funktioniert wie in dem video gezeigt und nicht das erstellen der Fragen, die form erscheint mit die 3 Fragen, fülle ich die form, aber wenn eine drücken Sie die Taste es nicht schaffen, die Fragen:

Loading development environment (Rails 4.1.6)
2.1.3 :001 > s = Survey.alle
Umfrage Belastung (3,0 ms) WÄHLEN Sie "Umfragen".* VON "Umfragen"
=> #]>
2.1.3 :002 > q = s[0].Fragen
Frage Load (0,6 ms) WÄHLEN Sie "Fragen".* AUS "Fragen" WO "Fragen"."survey_id" = ? [["survey_id", 2]]
=> #

Ich sehe keinen Unterschied zwischen meinem code und das Beispiel. Ich habe sogar versucht, einige änderungen in der SurveysController ohne Erfolg:

Einfügen question_attributes:[:id:Inhalt] in der Genehmigung der Methode survey_params
oder
Das einfügen von @ - Umfrage.Fragen.erstellen(survey_params[:questions_attributes]), wenn nach Erhebung.speichern Sie auf create-Methode, so entsteht die Frage, aber mit Inhalt: nill

In diesem Punkt bin ich stecken geblieben. Ich weiß nicht, was mehr, was zu tun ist, was bin ich int den controller?
Kann mir jemand etwas helfen, danke.

InformationsquelleAutor fasantos | 2014-12-29

Schreibe einen Kommentar