第一个问题:如何验证模型关系并在验证失败时将其标记为表单。
我有一个主题模型:
class Subject < ActiveRecord::Base
belongs_to :semester
validates_presence_of :semester
end
在我看来(表格):
<%= select_tag :semester, options_from_collection_for_select(@semesters,"id","name") %>
validates_presence_of
工作正常。但是当验证失败时(用户忘记进入学期)。学期输入未标记为红色。
第二个问题:如何验证输入字段。
在我看来,我也有一个大学输入领域,但模范科目与大学没有关系,没有大学表格的大学。所以如何验证它并用红色标记。
提前致谢。
答案 0 :(得分:2)
如果您希望错误地显示红色字段“开箱即用”,则必须使用form builder。代码看起来像f.select ...
,而不是select_tag
。
使用表单构建器,在<div class="field_with_errors">...</div>
内创建有错误的字段。脚手架生成的css文件以红色显示这些字段;如果您没有使用它,则必须将css规则添加到您的CSS中。
答案 1 :(得分:1)
# app/models/subject.rb
class Subject < ActiveRecord::Base
belongs_to :semester
validates :semester, :university, presence: true # new syntax http://api.rubyonrails.org/classes/ActiveModel/Validations/ClassMethods.html#method-i-validates
end
# app/views/subjects/_form.html.erb
<%= form_for @subject do |f| %>
Semestr: <%= f.collection_select :semester_id, Semestr.all, :id, :name, prompt: true %>
University: <%= f.text_field :univercity %>
<% end %>
有关在rails中构建表单的更多信息(启用了验证),您可以找到http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html
答案 2 :(得分:0)
您希望的那些“红色错误”可能来自像formtastic这样的表单助手宝石,请随时查看。
我真的不知道你的第二个问题是什么,但是如果你正在寻找自定义验证。查看rails docs上的{{3}}寻求帮助。
如果您需要更多帮助,(请)编辑您的问题以便更清楚(谢谢)