在轨道上的红宝石中验证表格

时间:2014-06-07 08:33:39

标签: ruby-on-rails ruby redmine

我正在研究Redmine并在rails上使用Ruby。现在,我需要对表单进行验证。我是否需要编辑模型或控制器以验证表单?

3 个答案:

答案 0 :(得分:4)

通常验证会进入模型,但不要忘记控制器需要允许某些参数通过permit方法传递给模型本身。

控制器的工作是尝试创建或更新模型,然后定义如果不能解决问题会发生什么的行为。这可能是显示错误页面,或发送失败的API调用响应。这取决于你正在建设什么。

答案 1 :(得分:2)

这取决于您要验证的内容;但正如tadman建议的那样,您需要遵守惯例和define the validations in the model

为什么这样?

答案很简单 - MVC

enter image description here

当您向Rails应用发送数据时,controller只会组织数据和数据。将其发送给模型。该模型的工作是验证,保存&将处理后的数据作为object返回(根据Ruby的OOP结构)。

-

<强>模型

Rails'inbuilt validators在模型级别工作(IE通过控制器收到数据后,将其传递给模型 - it 然后验证它):

#app/models/model.rb
Class Model < ActiveRecord::Base
   validates :attribute, presence: true
end

如果您的数据未通过此验证,它将基本上将对象返回到您的控制器,然后控制器将呈现相应的视图(可能是显示错误的视图)。

所以要回答你的问题,你一定要在 model

中查看验证

答案 2 :(得分:0)

转到app / views / issues。然后通过从我要验证的属性中删除“:required =&gt; true”来编辑_attributes.html.erb。在那之后,我编辑了  validates_presence_of:subject,:priority,:project,:tracker,:author,:status 来自issues.rb文件的模型。在这里,我可以添加或删除要包含或排除的字段。 通过这种方式,我解决了这个问题......