Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 通过Sinatra模型和验证_Ruby_Validation_Sinatra - Fatal编程技术网

Ruby 通过Sinatra模型和验证

Ruby 通过Sinatra模型和验证,ruby,validation,sinatra,Ruby,Validation,Sinatra,正如我最近开始的另一个类似的线程中提到的,我正在将一个ASP MVC应用程序移植到Sinatra,部分是为了学习,部分是为了生产 目前我的ASP MVC应用程序没有视图,它只是将模型公开为Xml/Json等,并以相同的方式接受它们。因此,在有人向服务器发送模型的场景中,它将自动绑定对象,执行验证,然后返回验证错误(如果有),如果没有,则执行相关操作 现在在Sinatra,ASP MVC是一件非常棒的事情,因为我在如何做这些部分上有更多的选择,但是我不知道有什么gems/libraries功能可以

正如我最近开始的另一个类似的线程中提到的,我正在将一个ASP MVC应用程序移植到Sinatra,部分是为了学习,部分是为了生产

目前我的ASP MVC应用程序没有视图,它只是将模型公开为Xml/Json等,并以相同的方式接受它们。因此,在有人向服务器发送模型的场景中,它将自动绑定对象,执行验证,然后返回验证错误(如果有),如果没有,则执行相关操作

现在在Sinatra,ASP MVC是一件非常棒的事情,因为我在如何做这些部分上有更多的选择,但是我不知道有什么gems/libraries功能可以用来做这件事


我的理想方案是让我的纯html/js前端将模型发布为json,然后将其转换为实际模型,在那里我可以验证它(通过Sinatra或其他框架),然后根据验证结果做出决定。

听起来像ORM的普通情况。例如,您可以使用。有了它,您只需通过HTTP将表单发送到特定路由,然后执行以下操作:

post '/create' do
  @post = Post.new(params[:your_form])
  if @post.save
    erb :a_template
  else
    erb :your_form
  end
end
其中params[:your_form]是包含表单内容的散列。根本不需要JSON。如果保存过程失败(出于验证原因或其他原因),模型对象
@post
将出现错误,您可以在不同的视图中处理这些错误(
:例如,您的表单

致意


Tobias

试着看看这个宝石:

然后,您应该能够为要创建为转换为json对象的属性散列的对象传入属性:

{:attribute1 => "value1", :attribute2 => "value2"}.to_json
在您的Sinatra应用程序上,捕捉它们并根据这些属性构建对象,您还可以使用Sinatra进行验证:

def '/create_object' do
  content_type :json
  obj = Object.new(JSON.parse(params[:object]))

  if obj.save
    obj.to_json
  else
    error 400, user.errors.to_json
  end
end

我在看DataMapper,但我的开发环境是windows,数据适配器似乎不起作用,在这个问题的范围内,我不需要ORM,我只想得到一个模型并验证它,但在我的实际情况下,ORM将是ITI的一部分如果你只需要验证系统,可能会有帮助。我可以只需要一个对_json的实例调用吗?i、 我创建一个Person类的实例,然后将其序列化并发送出去?因为我的一些对象非常复杂。我相信您应该能够执行类似于
Person.first.to_json
的操作。如果您想进行更高级的序列化,那么可以将序列化程序传递给to_json方法;请看下面的内容,了解有关序列化的更多信息:有关于验证的信息吗?我找到的所有与模型验证和ruby相关的资源都返回了ActiveRecord和RoR。