Ruby on rails 在使用to_json时处理数组
我刚刚开始学习RubyonRails,我正在使用这段代码获取问题模型的json表示Ruby on rails 在使用to_json时处理数组,ruby-on-rails,ruby,json,Ruby On Rails,Ruby,Json,我刚刚开始学习RubyonRails,我正在使用这段代码获取问题模型的json表示 post "api/quizzes/addquestion/#{@quiz.id}", { question: { text: "Question Text Example", mark: 2, choices:["a","b","c","d"], right_answer: "a" } }.to_json 我得到: 选项:[],空数组 我不知道原因,因
post "api/quizzes/addquestion/#{@quiz.id}",
{ question:
{ text: "Question Text Example", mark: 2, choices:["a","b","c","d"], right_answer: "a" }
}.to_json
我得到:
选项:[],空数组
我不知道原因,因为所有其他属性都已成功发送。这个问题的解决办法是什么
我在测试以下方法时使用此方法:
def add_question
question = Question.new(question_params)
quiz = Quiz.find(params[:quiz_id])
if question.save
quiz.questions << question
render json: { success: true, data:{:question => question}, info:{} }, status: 201
else
render json: { success: false, data:{}, :info => question.errors }, status: 422
end
end
def question_params
params.require(:question).permit(:text, :mark, :choice, :right_answer)
end
def添加问题
问题=问题。新建(问题参数)
quick=quick.find(参数[:quick\u id])
如果有问题,请保存
quick.questions问题},信息:{},状态:201
其他的
呈现json:{success:false,data:{},:info=>question.errors},状态:422
结束
结束
定义问题参数
参数要求(:问题)。允许(:文本,:标记,:选择,:正确答案)
结束
测试:
class AddingQuestionsTest < ActionDispatch::IntegrationTest
setup {@quiz = Quiz.create(name: 'Quiz1', subject: 'physics', duration: 10, no_of_MCQ: 5, no_of_rearrangeQ: 5)}
setup {@question = Question.create(text: "Question Text Example", mark: 2, choices:["a","b","c","d"], right_answer: "a")}
test 'successes to add question to a quiz' do
post "api/quizzes/addquestion/#{@quiz.id}",
{ question:
{ text: "Question Text Example", mark: 2, choices:["a","b","c","d"], right_answer: "a" }
}.to_json,
{ 'Accept' => Mime::JSON, 'Content-Type' => Mime::JSON.to_s }
question_response = json(response.body)
assert_equal 201, response.status
assert_equal @quiz.questions.first, @question
assert_equal publish_response[:success], true
end
end
类添加问题测试Mime::JSON,'Content Type'=>Mime::JSON.to_s}
question\u response=json(response.body)
断言_等于201,response.status
断言_equal@quick.questions.first,@question
assert_equal publish_response[:success],true
结束
结束
这就是问题模型:
类问题def question_params
params.require(:question).permit(:text, :mark, :choice, :right_answer)
end
to
def question_params
params.require(:question).permit(:text, :mark, :right_answer, :choice => [])
end
你不能说你在哪里得到它作为一个空数组。我只是想猜测一下……:)如果您发布的内容是日志中显示的内容,但检查数据库时选项为空,那么您的模型是否配置为允许您更新选项属性?我有创建方法,正在测试它,我将使用方法、测试和模型@David更新问题Hoelzer@DavidHoelzer你现在可以看看了