Я создаю инструмент опроса с помощью Rails. Я пытаюсь настроить проверку ответа, когда участник должен отправить ответ длиной более 5 символов. Я получаю следующую ошибку при попытке добавить новый ответ.
неопределенный метод `errors '
Я читал в других сообщениях, что это, вероятно, будет вызвано тем, что вы не инициализировали объект ответа в контроллере ответов. Моя проблема с этим в том, что у меня есть - это просто не выглядит так:
def new
@answer = Answer.new
end
Это выглядит так в моем коде:
def new
@study = Study.find(params[:study_id])
@question = @study.questions.find(params[:question_id])
@participant = find_participant
@answer = @question.answers.build(participant: @participant)
end
Это код для моего Модель ответа:
class Answer < ApplicationRecord
belongs_to :question
belongs_to :participant
validates :answer, presence: true,
length: { minimum: 5 }
end
И это полная ошибка, которую я получаю на своем сервере:
Started GET "/studies/32/questions/63/answers/new" for ::1 at 2020-02-18 10:14:41 +1300
(2.1ms) SELECT sqlite_version(*)
Processing by AnswersController#new as HTML
Parameters: {"study_id"=>"32", "question_id"=>"63"}
Study Load (1.1ms) SELECT "studies".* FROM "studies" WHERE "studies"."id" = ? LIMIT ? [["id", 32], ["LIMIT", 1]]
↳ app/controllers/answers_controller.rb:3:in `new'
Question Load (1.5ms) SELECT "questions".* FROM "questions" WHERE "questions"."study_id" = ? AND "questions"."id" = ? LIMIT ? [["study_id", 32], ["id", 63], ["LIMIT", 1]]
↳ app/controllers/answers_controller.rb:4:in `new'
(0.5ms) begin transaction
↳ app/controllers/answers_controller.rb:33:in `find_participant'
Participant Create (4.5ms) INSERT INTO "participants" ("created_at", "updated_at") VALUES (?, ?) [["created_at", "2020-02-17 21:14:45.571329"], ["updated_at", "2020-02-17 21:14:45.571329"]]
↳ app/controllers/answers_controller.rb:33:in `find_participant'
(3.0ms) commit transaction
↳ app/controllers/answers_controller.rb:33:in `find_participant'
Rendering answers/new.html.erb within layouts/application
Answer Load (1.5ms) SELECT "answers".* FROM "answers" WHERE "answers"."question_id" = ? [["question_id", 63]]
Rendered answers/new.html.erb within layouts/application (Duration: 1228.1ms | Allocations: 13885323)
Completed 500 Internal Server Error in 4106ms (ActiveRecord: 12.0ms | Allocations: 37401284)
ActionView::Template::Error (undefined method `errors' for #<Answer::ActiveRecord_Associations_CollectionProxy:0x00007fae2e5792f0>):
4: <%= form_with model: @answer, url: study_question_answers_path(@study, @question), local: true do |form| %>
5: <%= form.hidden_field :participant_id %>
6:
7: <% if @question.answers.errors.any? %>
8:
9:
10: <% end %>
Это мой первый проект rails, и я не уверен, что я ' Я пропал - кто-нибудь может мне помочь?
Спасибо