我正在使用这种方法添加一个问题(在将其分配给测验时创建它)但除了选项(字符串数组)之外,所有字段都是成功编写的。我不知道问题是什么。
def add_question
question = Question.new(question_params)
if (current_instructor.quizzes.exists?(:id => params[:quiz_id]))
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
else
render json: { success: false, data:{}, info:"Quiz is not found"}, status: 422
end
end
private
def question_params
params.require(:question).permit(:text, :mark, :right_answer,{:choices => []})
end
class Question < ActiveRecord::Base
serialize :choices,Array
belongs_to :quiz
validates :text, presence: true
validates :right_answer, presence: true
end
卷曲-v -H&#39;内容类型:application / json&#39; -H&#39;接受:application / json&#39; -H&#34; X-Instructor-Email:fakhr@example.com" #-H&#34; X-Instructor-Token:gjE7xULgNLSorQgqr689&#34; -X POST http://localhost:3000/api/quizzes/addquestion/1 -d&#34;
{\&#34;问题&#34;:{\&#34;文字\&#34;:\&#34;您的名字是什么?\&#34;,\&#34;标记\& #34;:\&#34; 10 \&#34; \&#34; right_answer \&#34;:\&#34; \&#34; \&#34;选择\&#34 ;:\&#34; [A,b,C,d] \&#34;}}&#34;
终端: 创建问题并写入除选择之外的所有属性 {&#34;成功&#34;:真,&#34;数据&#34; {&#34;问题&#34; {&#34; ID&#34;:13,&#34;文本&#34 ;:&#34;你的名字是什么?&#34;,&#34;标记&#34;:10.0,&#34;选择&#34;: [],&#34; right_answer&#34;:&#34;&#34;&#34; quiz_id&#34;:1,&#34; created_at&#34;:&#34; 2015-02-06T14 :07:15.677Z&#34;&#34;的updated_at&#34;:&#34; 2015-02- 06T14:07:15.806Z&#34;}},&#34;信息&#34;:{}}%
在我得到的服务器中: 未允许的参数:选项
迁移:
class CreateQuestions < ActiveRecord::Migration
def change
create_table :questions do |t|
t.text :text
t.float :mark
t.text :choices
t.string :right_answer
t.belongs_to :quiz, index: true
t.timestamps
end
end
end
答案 0 :(得分:0)
我们可以看到您的迁移吗?我通过string
将serialize
列作为数组启动时遇到了类似的问题。我的解决方案是将列类型更改为text
。
答案 1 :(得分:0)
尝试
params.require(:question).permit(:text, :mark, :right_answer, choices:[])
为什么要把它包装成哈希?