NoMethodError (неопределенный метод `each 'для nil: NilClass): - PullRequest
0 голосов
/ 20 февраля 2019
class Api::SurveyAnswersController < ApplicationController

  def create
    # @survey_answer = SurveyAnswer.new(survey_answer_params)
    survey_answers = []
    survey_id = params[:survey_id]
    params[:questions].each do |q|
      answer = {survey_id: survey_id, option_ids: [], question_id: q[:id], 
                title: q[:answer]}
      if q[:options].present?
        selected_options = q[:answer].split(',')
        selected_options.each do |selected_option|
          q[:options].each do |option|
            if option[:title]== selected_option
              answer[:option_ids] << option[:id]
              #<todo add break when in this condition
            end
          end
        end
        survey_answers << answer
      end
    end

    puts survey_answers
    # @survey_answers = SurveyAnswer.create(survey_answers)
    if SurveyAnswer.create(survey_answers)
    render json: survey_answers
    end
  end
end

У меня есть модель опроса, в которой есть несколько вопросов.Каждый вопрос содержит ответы.Когда я пытаюсь нажать на пост-запрос через почтальона, чтобы вставить ответы, он выдает 505 внутреннюю ошибку сервера с сообщением «неопределенный метод каждый для nil: nilclass».Кто-нибудь может сказать, в чем проблема?

1 Ответ

0 голосов
/ 20 февраля 2019

Вы пытаетесь запустить цикл .each для пустого объекта.

Убедитесь, что оба значения

params[:questions]

и

q[:options]

не пусты (не равны ноль ).

NoMethodError иногда звучит очень непредставительно, особенно если вы только начинаете с Ruby.

Попытайтесь просмотреть Stackoverflow в следующий раз, потому что на этот вопрос уже дан ответ здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...