Rails 4:如何显示红色错误的字段?

时间:2014-03-05 07:17:03

标签: ruby-on-rails forms validation ruby-on-rails-4

第一个问题:如何验证模型关系并在验证失败时将其标记为表单。

我有一个主题模型:

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工作正常。但是当验证失败时(用户忘记进入学期)。学期输入未标记为红色。

第二个问题:如何验证输入字段。

在我看来,我也有一个大学输入领域,但模范科目与大学没有关系,没有大学表格的大学。所以如何验证它并用红色标记。

提前致谢。

3 个答案:

答案 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}}寻求帮助。

如果您需要更多帮助,(请)编辑您的问题以便更清楚(谢谢)