Rails On Create неопределенный метод `destroy? 'за # - PullRequest
0 голосов
/ 25 мая 2018

При попытке создать запись я получаю ошибку "неопределенный метод уничтожен?"прямо в точке "если @ form_response.save", и я не уверен, почему.Вот контроллер:

class FormResponsesController < ApplicationController
before_action :authenticate_user!
before_action :initialize_form, only: [:new]

def index
    @patient = Patient.find(params[:patient_id])
    @forms = Form.all
end

def new

end

def create
    @patient = Patient.find(params[:patient_id])
    @form = Form.find(params[:form_id])
    @form_response = FormResponse.new(form_response_params)
    @form_response.patient = @patient
    @form_response.form = @form
    if @form_response.save
        flash[:success] = "Form filled out."
        redirect_to patient_forms_path
    else
        puts("Wasn't created")
        flash[:error] = @form_response.errors.full_messages.to_sentence
        # THIS ISN'T WORKING, FIX THIS
        redirect_to new_patient_form_response_path(id: params[:form_id])
    end
end

def show

end

def destroy
    @form_response = FormResponse.find(params[:id]).destroy
    flash[:success] = "Form Response Deleted."
    redirect_to patient_forms_path, notice: "Form Response Deleted."
end

private

def initialize_form
    puts("initialize_form")
    @patient = Patient.find(params[:patient_id])
    @form = Form.find(params[:id])
    @form_response = FormResponse.new()

    @form.form_sections.each_with_index do |section, index|
        @form_response.form_response_sections.build(
            form_section: section
        )
        section.form_fields.each do |field|
            @form_response.form_response_sections[index].form_response_fields.build(
                field_type: field.field_type,
                name: field.name,
                key: field.key,
                field_width: field.field_width,
                value: field.value,
                description: field.description,
                required: field.required,
                form_field: field
            )
        end
    end
end

def form_response_params
    params.require("form_response").permit(
        form_response_sections_attributes: [
            :form_section_id,
            form_response_fields_attributes: [
                :form_field_id, 
                :key, 
                :value
            ]
        ]
    )
end

end

Модель FormResponse:

class FormResponse < ApplicationRecord
    belongs_to :patient
    belongs_to :form

    has_many :form_response_sections
    accepts_nested_attributes_for :form_response_sections
end

Модель FormResponseSection

class FormResponseSection < ApplicationRecord
    belongs_to :form_response_fields
    belongs_to :form_section
    has_many :form_response_fields
    accepts_nested_attributes_for :form_response_fields
end

Модель FormResponseField

class FormResponseField < ApplicationRecord
    belongs_to :form_response_section
    belongs_to :form_field
end

Как видите, есть два вложенных атрибута, пытающихся понять, что может пойти не так ... "так как уничтожен?"не должен быть запущен на этом этапе, потому что он не существует.Вот вывод консоли при отправке нового метода:

 pp/controllers/form_responses_controller.rb:20:in `create'
::1 - - [24/May/2018:15:20:39 PDT] "POST /patients/1/form_responses HTTP/1.1" 500 192571
http://localhost:3000/patients/1/form_responses/new?id=1 -> /patients/1/form_responses
Started POST "/patients/1/form_responses" for ::1 at 2018-05-24 15:20:41 -0700
Processing by FormResponsesController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"zN9OLKcZRE9li1j019Mp1qkvWI8aYqhxbV2YRgPdnfNnJcAqivNtuPjxK6Vm210lGUNGuwoBFcQObRyUVebgWQ==", "form_id"=>"1", "form_response"=>{"form_response_sections_attributes"=>{"0"=>{"form_section_id"=>"1", "form_response_fields_attributes"=>{"0"=>{"form_field_id"=>"1", "value"=>""}, "1"=>{"form_field_id"=>"2", "value"=>""}, "2"=>{"form_field_id"=>"3", "value"=>""}, "3"=>{"form_field_id"=>"4", "value"=>""}, "4"=>{"form_field_id"=>"5", "value"=>""}, "5"=>{"form_field_id"=>"6", "value"=>""}}}, "1"=>{"form_section_id"=>"2", "form_response_fields_attributes"=>{"0"=>{"form_field_id"=>"7", "value"=>"0"}, "1"=>{"form_field_id"=>"8", "value"=>"0"}}}, "2"=>{"form_section_id"=>"3", "form_response_fields_attributes"=>{"0"=>{"form_field_id"=>"9", "value"=>"0"}}}}}, "commit"=>"Submit", "patient_id"=>"1"}
  User Load (0.3ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ?  [["id", 1], ["LIMIT", 1]]
  Patient Load (0.1ms)  SELECT  "patients".* FROM "patients" WHERE "patients"."id" = ? LIMIT ?  [["id", 1], ["LIMIT", 1]]
  Form Load (0.1ms)  SELECT  "forms".* FROM "forms" WHERE "forms"."id" = ? LIMIT ?  [["id", 1], ["LIMIT", 1]]
   (0.1ms)  begin transaction
  FormSection Load (0.1ms)  SELECT  "form_sections".* FROM "form_sections" WHERE "form_sections"."id" = ? LIMIT ?  [["id", 1], ["LIMIT", 1]]
  FormField Load (0.0ms)  SELECT  "form_fields".* FROM "form_fields" WHERE "form_fields"."id" = ? LIMIT ?  [["id", 1], ["LIMIT", 1]]
  FormField Load (0.0ms)  SELECT  "form_fields".* FROM "form_fields" WHERE "form_fields"."id" = ? LIMIT ?  [["id", 2], ["LIMIT", 1]]
  FormField Load (0.0ms)  SELECT  "form_fields".* FROM "form_fields" WHERE "form_fields"."id" = ? LIMIT ?  [["id", 3], ["LIMIT", 1]]
  FormField Load (0.0ms)  SELECT  "form_fields".* FROM "form_fields" WHERE "form_fields"."id" = ? LIMIT ?  [["id", 4], ["LIMIT", 1]]
  FormField Load (0.0ms)  SELECT  "form_fields".* FROM "form_fields" WHERE "form_fields"."id" = ? LIMIT ?  [["id", 5], ["LIMIT", 1]]
  FormField Load (0.0ms)  SELECT  "form_fields".* FROM "form_fields" WHERE "form_fields"."id" = ? LIMIT ?  [["id", 6], ["LIMIT", 1]]
  FormSection Load (0.2ms)  SELECT  "form_sections".* FROM "form_sections" WHERE "form_sections"."id" = ? LIMIT ?  [["id", 2], ["LIMIT", 1]]
  FormField Load (0.1ms)  SELECT  "form_fields".* FROM "form_fields" WHERE "form_fields"."id" = ? LIMIT ?  [["id", 7], ["LIMIT", 1]]
  FormField Load (0.1ms)  SELECT  "form_fields".* FROM "form_fields" WHERE "form_fields"."id" = ? LIMIT ?  [["id", 8], ["LIMIT", 1]]
  FormSection Load (0.1ms)  SELECT  "form_sections".* FROM "form_sections" WHERE "form_sections"."id" = ? LIMIT ?  [["id", 3], ["LIMIT", 1]]
  FormField Load (0.1ms)  SELECT  "form_fields".* FROM "form_fields" WHERE "form_fields"."id" = ? LIMIT ?  [["id", 9], ["LIMIT", 1]]
   (0.1ms)  rollback transaction
   (0.0ms)  begin transaction
  SQL (0.4ms)  INSERT INTO "form_responses" ("form_id", "patient_id") VALUES (?, ?)  [["form_id", 1], ["patient_id", 1]]
   (2.2ms)  rollback transaction
Completed 500 Internal Server Error in 33ms (ActiveRecord: 3.9ms)



NoMethodError (undefined method `destroyed?' for #<Array:0x007feeff8abf88>):

app/controllers/form_responses_controller.rb:20:in `create'
::1 - - [24/May/2018:15:20:41 PDT] "POST /patients/1/form_responses HTTP/1.1" 500 192571
http://localhost:3000/patients/1/form_responses/new?id=1 -> /patients/1/form_responses
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...