Rails 4 - Verschachteltes Formular mit accept_nested_attributes_for controller setup?

Ich versuche mit @ ein verschachteltes Formular zu erstellform_for undfields_for. Nach viel Recherche und Erfolg, arbeite ich nicht mehr an meinem Projekt. Ich versuche nur, einen Railscast neu zu erstellen, um zu sehen, was ich falsch gemacht habe.

Ich versuche, das Beispiel unter @ neu zu erstellehttp: //railscasts.com/episodes/196-nested-model-form-part-, das sollte nicht so schwer sein, da der Code vorhanden ist, aber ich kann keine Fragen aus der Umfrage erstellen. 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 es in genau der gleichen Reihenfolge des Videos zu machen. Mein Fragemodell:

class Question < ActiveRecord::Base
  belongs_to :survey
end

Mein Umfragemodell:

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

Mein Umfrageformular mit verschachtelten Fragenfeldern:

<%= 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 %>

Meine Umfrage zeigt:

<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 mein 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 im Video gezeigt und die Fragen nicht erstellt, erscheint das Formular mit den 3 Fragen, ich fülle das Formular aus, aber wenn ein Druck auferstelle es werden keine Fragen erstellt:

Loading development environment (Rails 4.1.6) 2.1.3: 001> s = Survey.all Survey Load (3,0 ms) SELECT "surveys". * FROM "surveys" => #]> 2.1.3: 002> q = s [0] .questions Question Load (0,6 ms) SELECT "questions". * FROM "questions" WHERE "questions". "survey_id" =? [["survey_id", 2]] => #

Ich kann keinen Unterschied zwischen meinem Code und dem Beispiel erkennen. Ich habe sogar versucht, einige Änderungen im @ vorzunehmSurveysController ohne Erfolg:

Inserting question_attributes: [: id,: content] in Erlaubnis der Methode survey_params oder Inserting @ survey.questions.create (survey_params [: questions_attributes]), nachdem survey.save on create method die Frage erstellt hat, aber mit dem Inhalt: nill

n diesem Punkt stecke ich fest. Ich weiß nicht mehr was ich tun soll, was fehlt mir im Controller? Kann mir jemand etwas helfen, danke.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage