3

我在 Rails 中有一个 HTML 表单,比如

<form name="input" action="jump">
  Title: <input type="text" name="title"> 
  <input type="button" value="Submit">
</form> 

我想title成为必填字段(即用户不能将其留空),并且我想在 Railsjump控制器中验证这一点。注意title不是模型中的字段;它只是一个将在控制器中处理的表单字段。

如何进行验证,并优雅地向用户显示错误?

4

3 回答 3

5

您可以使用活动模型来处理事情:

类 SomeModel << ActiveModel

#some Model
attr_accessor :title
validates_presence_of :title

结尾

这样做的好处是您可以将验证和显示错误的处理提交给 Rails。

另一种方法是纯粹在控制器端处理事情:

if  params[:title].present?

  ...#do something

else

  ...#do something else

然而,这是一种不太优雅的方法。如果你走这条路,我建议创建一个 ruby​​ 对象以至少将逻辑移出控制器。

于 2012-11-12T00:59:38.383 回答
4

你实际上可以使用 HTML5 技术来申请

 <input type="text" name="usrname" required="required" />

此外,您可以使用 gem '客户端验证' github 在这里 https://github.com/bcardarella/client_side_validations

我建议你使用宝石......非常棒:D

于 2012-11-12T03:44:27.753 回答
3

您有 2 个选项,您可以在前端和后端进行验证,两者都做很好:

前端

<%= f.text_field ..other attributes... required: true %>

后端

你又有两个选择

在你的模型中

validates :title, :presence

或者在你的控制器中你可以用这个检查

if  params[:title].present?
    #your logic
end
于 2016-03-24T15:04:05.633 回答