Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 没有控制器的模型在创建对象时传递参数_Ruby On Rails_Ruby_Ruby On Rails 4_Controller - Fatal编程技术网

Ruby on rails 没有控制器的模型在创建对象时传递参数

Ruby on rails 没有控制器的模型在创建对象时传递参数,ruby-on-rails,ruby,ruby-on-rails-4,controller,Ruby On Rails,Ruby,Ruby On Rails 4,Controller,我创建了一个名为考试问题(我没有为它创建特定的控制器)的模型,并尝试使用以下工具一次创建多个记录: 表格: 控制台: Started POST "/create_exam_questions" for *******(#IP hidden by me) at 2018-07-07 09:54:21 +0000 Cannot render console from *******(#IP hidden by me)! Allowed networks: 127.0.0.1, ::1, 127.0.

我创建了一个名为
考试问题
(我没有为它创建特定的控制器)的模型,并尝试使用以下工具一次创建多个记录:

表格:

控制台:

Started POST "/create_exam_questions" for *******(#IP hidden by me) at 2018-07-07 09:54:21 +0000
Cannot render console from *******(#IP hidden by me)! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
/home/ubuntu/workspace/app/controllers/basic_methods_controller.rb:358: warning: key :name is duplicated and overwritten on line 358
Processing by BasicMethodsController#create_exam_questions as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"jTlqIpR8JeoX0quDSvmU+aCaT8aw3wGgopCczTo8zkQQrNX55TXj0IJsHtkDK0SISQNEqRj08Ekk6o4SR1pu3A==", "exam_questions"=>[{"question_no"=>"1", "question_type"=>"1", "exam_id"=>"7", "question"=>"If 5x plus 32 equals 4 minus 2x what is the value of x ?", "exam_options"=>"-4,-3,4,17,12", "correct_answers"=>"A"}, {"question_no"=>"2", "question_type"=>"1", "exam_id"=>"7", "question"=>"Which of the following numbers is farthest from the number 1 on the number line?", "exam_options"=>"-10,-5,0,5,10", "correct_answers"=>"A"}], "commit"=>"Create Exam"}
  Teacher Load (0.4ms)  SELECT  "teachers".* FROM "teachers" WHERE "teachers"."id" = ?  ORDER BY "teachers"."id" ASC LIMIT 1  [["id", 3]]
   (0.2ms)  begin transaction
  SQL (0.8ms)  INSERT INTO "exam_questions" ("created_at", "updated_at") VALUES (?, ?)  [["created_at", "2018-07-07 09:54:21.732397"], ["updated_at", "2018-07-07 09:54:21.732397"]]
   (19.1ms)  commit transaction
   (0.1ms)  begin transaction
  SQL (0.4ms)  INSERT INTO "exam_questions" ("created_at", "updated_at") VALUES (?, ?)  [["created_at", "2018-07-07 09:54:21.761920"], ["updated_at", "2018-07-07 09:54:21.761920"]]
   (25.4ms)  commit transaction
Redirected to *******(#(root_path) hidden by me)
Completed 302 Found in 83ms (ActiveRecord: 47.3ms)
但它总是创建所有属性都设置为nil的记录
我做错了什么?

您正在以一种非常非常规的方式设置参数

我建议换一种更传统的方式:

注意:ActiveRecord的
create
方法可以接受数组参数。这样做的好处是:只有一个数据库事务。如果其中一条记录失败,它们将全部失败

例如:

# controller

  def create
    ExamQuestion.create(exam_question_params)
  end 

  private 

  def exam_question_params
    params.permit(exam_questions: [:question, :correct_answers, :question_no, :exam_options, :question_type, :exam_id])
  end

我在我的虚拟应用程序中测试了你的精确代码,它运行正常! 查看控制台输出:

Started POST "/create_exam_questions" for 127.0.0.1 at 2018-07-07 17:29:39 +0200
Processing by BasicMethodsController#create_exam_questions as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"p+i+8cvH642MbRgLb21CL8Y+yXmE51uKdKC7UgQg1VU=", "exam_questions"=>[{"question_no"=>"1", "question_type"=>"1", "exam_id"=>"4", "question"=>"Question text", "exam_options"=>"Exam options fill", "correct_answers"=>"C"}, {"question_no"=>"2", "question_type"=>"1", "exam_id"=>"4", "question"=>"Question text", "exam_options"=>"Exam options fill", "correct_answers"=>"C"}], "commit"=>"Create Exam"}
   (0.1ms)  begin transaction
  SQL (0.4ms)  INSERT INTO "exam_questions" ("correct_answers", "created_at", "exam_id", "exam_options", "question", "question_no", "question_type", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?)  [["correct_answers", "C"], ["created_at", "2018-07-07 15:29:39.233939"], ["exam_id", 4], ["exam_options", "Exam options fill"], ["question", "Question text"], ["question_no", 1], ["question_type", 1], ["updated_at", "2018-07-07 15:29:39.233939"]]
   (1.1ms)  commit transaction
尝试使用
@exam\u question=ExamQuestion.new(parameters.permit!)

从控制台消息中,还可以尝试:
  • 将IP列入白名单:
  • 控制器第358行:
    基本方法\u控制器。rb:358:警告:键:名称在第358行重复并覆盖
  • 教师模型:
    教师加载(0.4ms).
    在事务开始之前,这是什么

我删除了整个模型,运行了一个脚手架生成器,生成了控制器和试题模型。
我使用了和我在问题中发布的代码相同的代码,并且成功了。我的生成器肯定出了问题,或者你的代码对我来说应该可以正常工作,你可以在@exam_question之前设置raise异常。保存并检查控制台中的所有变量和对象,看看有什么问题。这里有太多问题,很难缩小问题的范围。请在提交表单时发布终端的日志输出…从
Started post
开始。请编辑您的原始问题,不要将其发布到评论中。@MarkMerritt Done
# controller

  def create
    ExamQuestion.create(exam_question_params)
  end 

  private 

  def exam_question_params
    params.permit(exam_questions: [:question, :correct_answers, :question_no, :exam_options, :question_type, :exam_id])
  end
Started POST "/create_exam_questions" for 127.0.0.1 at 2018-07-07 17:29:39 +0200
Processing by BasicMethodsController#create_exam_questions as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"p+i+8cvH642MbRgLb21CL8Y+yXmE51uKdKC7UgQg1VU=", "exam_questions"=>[{"question_no"=>"1", "question_type"=>"1", "exam_id"=>"4", "question"=>"Question text", "exam_options"=>"Exam options fill", "correct_answers"=>"C"}, {"question_no"=>"2", "question_type"=>"1", "exam_id"=>"4", "question"=>"Question text", "exam_options"=>"Exam options fill", "correct_answers"=>"C"}], "commit"=>"Create Exam"}
   (0.1ms)  begin transaction
  SQL (0.4ms)  INSERT INTO "exam_questions" ("correct_answers", "created_at", "exam_id", "exam_options", "question", "question_no", "question_type", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?)  [["correct_answers", "C"], ["created_at", "2018-07-07 15:29:39.233939"], ["exam_id", 4], ["exam_options", "Exam options fill"], ["question", "Question text"], ["question_no", 1], ["question_type", 1], ["updated_at", "2018-07-07 15:29:39.233939"]]
   (1.1ms)  commit transaction