【问题标题】:Rails 4: How to display fields with error in red?Rails 4:如何以红色显示错误字段?
【发布时间】:2014-03-05 07:17:03
【问题描述】:

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

我有一个主题模型:

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

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

在我看来,我也有一个大学输入字段,但是模型学科与大学没有关系,学科表中没有字段大学。那么如何验证它并用红色标记它。

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    如果您希望错误字段以红色“开箱即用”显示,您必须使用form builder。代码看起来像f.select ...,而不是使用select_tag

    使用表单构建器,有错误的字段在&lt;div class="field_with_errors"&gt;...&lt;/div&gt; 中创建。脚手架生成的css文件以红色显示这些字段;如果您不使用它,则必须将 css 规则添加到您的 css 中。

    【讨论】:

      【解决方案2】:
      # 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

      【讨论】:

      • 这回答了我的第一个问题。谢谢。但我收到此错误:#<0x007fb09d8d9f00>
      【解决方案3】:

      您希望看到的那些“红色错误”可能来自诸如formtastic 之类的表单助手 gem,请随时查看。

      我真的不知道您的第二个问题在问什么,但如果您正在寻找自定义验证。查看他们的rails docs 寻求帮助。

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

      【讨论】:

      • 我试图验证一个与学科没有关系的大学输入字段。当我将validates :university, presence: true 放入模型中时。我收到此错误:undefined method university' for #&lt;Subject:0x007fb09d8d9f00&gt;,因为该学科没有大学领域。
      猜你喜欢
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 2014-07-28
      相关资源
      最近更新 更多