未允许的参数

时间:2015-02-06 15:49:50

标签: ruby-on-rails arrays json

我正在使用这种方法添加一个问题(在将其分配给测验时创建它)但除了选项(字符串数组)之外,所有字段都是成功编写的。我不知道问题是什么。

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&#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

2 个答案:

答案 0 :(得分:0)

我们可以看到您的迁移吗?我通过stringserialize列作为数组启动时遇到了类似的问题。我的解决方案是将列类型更改为text

答案 1 :(得分:0)

尝试

params.require(:question).permit(:text, :mark, :right_answer, choices:[])

为什么要把它包装成哈希?

相关问题