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_Reactjs_Opalrb_Hyperstack - Fatal编程技术网

Ruby on rails 当模型未保存时在客户端上获取错误文本

Ruby on rails 当模型未保存时在客户端上获取错误文本,ruby-on-rails,ruby,reactjs,opalrb,hyperstack,Ruby On Rails,Ruby,Reactjs,Opalrb,Hyperstack,我使用的是Hyperstack.org框架,因此使用的是Opal编译的Ruby代码。Hyperstack与Rails的集成在客户机上创建了一些模型的表示,我对响应中的错误验证有疑问 当使用验证器保存模型时,当其中一个验证器被触发时,我无法在promise响应中获得完整的错误消息 在此代码中: @User.save(validate: true).then do |result| if result[:success] puts 'successs' m

我使用的是Hyperstack.org框架,因此使用的是Opal编译的Ruby代码。Hyperstack与Rails的集成在客户机上创建了一些模型的表示,我对响应中的错误验证有疑问

当使用验证器保存模型时,当其中一个验证器被触发时,我无法在promise响应中获得完整的错误消息

在此代码中:

@User.save(validate: true).then do |result|
      if result[:success]
        puts 'successs'
        mutate @open = false
      else
        result[:models].each do |response_model|
          puts "response_model.errors.class = #{response_model.errors.class}" #ActiveModel::Errors
          puts "response_model.errors.full_messages = #{response_model.errors.full_messages}" #nothing puts
        end
      end
第一个put返回
#ActiveModel::Errors
,但我似乎无法使用该模型的方法

我可以看到这方面的测试:所以我希望这是可行的,一定是我

另外,我注意到,对promise的JSON响应实际上包含错误消息:

{
  "success" => false, "saved_models" => [
    [227154, "User", {
      "id" => 48,
      "first_name" => "ds",
      "last_name" => nil,
      "email" => nil,
      "image_src" => nil,
      "date_of_birth" => nil,
      "is_admin" => false,
      "is_female" => false,
      "is_enabled" => true,
      "created_at" => "2019-03-23T12:29:05.728Z",
      "updated_at" => "2019-03-23T12:29:05.728Z"
    }, {
      "last_name" => ["can't be blank"]
    }]
  ], "message" => "HyperModel saving records failed!", "models" => [ < User: 0x37752(0x37750)[errors {
    "last_name" => ["can't be blank"]
  }] > ]
}
{
“成功”=>false,“保存的模型”=>[
[227154,“用户”{
“id”=>48,
“名字”=>“ds”,
“姓氏”=>无,
“电子邮件”=>无,
“image_src”=>nil,
“出生日期”=>零,
“is_admin”=>false,
“是女性”=>错误,
“是否启用”=>true,
“创建于”=>“2019-03-23T12:29:05.728Z”,
“更新时间:2019-03-23T12:29:05.728Z”
}, {
“姓氏”=>[“不能为空”]
}]
],“消息”=>“超模型保存记录失败!”,“模型”=>[[“不能为空”]
}] > ]
}

感谢您的帮助

看起来您使用
full\u messages
方法在HyperModel中遇到了一个bug。AFAIK所有其他方法在您的示例中都可以很好地工作


如果您确实需要
完整消息

我不理解作为块参数得到的
结果
对象,那么您可以使用一个变通补丁。是否应该保存的是
self
对象?它是否响应
[]
?注意
@User
应该是
@User
,因为Ruby是区分大小写的,方法和变量名应该是
小写的
@User
会让人对类的
User
产生混淆。我应该说谢谢你们的回复,但这是通过Hyperstack框架编译的客户端Opal代码。@User是一个惯例,用于证明这是一个传递到此组件的不可变参数(在本例中,它是一个模型,实际上是可变的-证明规则的异常)。