我正在使用此方法添加一个问题(创建它将其分配给测验),但所有字段都成功写入,但选择除外(字符串数组)我不知道问题是什么。不允许的参数
quizzes_controller.rb:
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
questions.rb:
class Question < ActiveRecord::Base
serialize :choices,Array
belongs_to :quiz
validates :text, presence: true
validates :right_answer, presence: true
end
卷曲-v -H '内容类型:应用程序/ JSON' -H '接受:应用/ JSON' - H“X-Instructor-Email:[email protected]”#-H“X-Instructor-Token:gjE7xULgNLSorQgqr689”-X POST http://localhost:3000/api/quizzes/addquestion/1 -d“
{\”question \“:{\”text \“: “你叫什么名字?”,“标记”:“10”,“right_answer”:“a”,“选择”:“[a,b,c,d] \“}}”
终端: 创建问题,除了选择外,所有属性都被写入 {“success”:true,“data”:{“question”:{“id”:13,“text”:“什么是您的名字?“,”标记“:10.0,”选项“: [],”right_answer“:”a“,”quiz_id“:1,”created_at“:”2015-02-06T14:07:15.677Z“, “的updated_at”: “2015-02- 06T14:07:15.806Z”}, “信息”:{}}%
在我的服务器: 不允许的参数:选择
迁移:
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
好吧,所以我在这里重新创建你的应用程序:https://gist.github.com/dimanyc/0d77f4b889bc2004351e。列类型看起来不错。 @斯坦尼斯拉夫Mekhonoshin是正确的包装'选择'哈希。没有必要。只需保留你的强参数:'params.require(:question).permit(:body,:mark,:choices,:right_answer)',并在模型中加入'serialize:choices,Array'。看我的要点。让我知道。 – 2015-02-07 08:01:29
可以在不改变curl命令中的任何问题的情况下解决该问题 – 2015-02-07 23:29:38