rails 3中无表格表单字段的验证

时间:2013-07-12 10:39:31

标签: ruby-on-rails-3 custom-validators

我正在尝试运行一个目标应用程序主页的表单,该表单同时使用无表和数据库存储的变量。我需要在表单上运行验证。我需要运行验证,特别是一个比较两个无表值的验证。

我最终的目标是通过以下gem获取运行客户端的验证: https://github.com/bcardarella/client_side_validations 但最初,我希望在表单提交时使用验证。

出现的第一个问题是哪个模型应该保存邮件验证逻辑。 homePage必须做很多事情,不是模型,最重要的是,搜索结果会导致不同的控制器。

随后,虽然有些验证是一次性的,并且实际上不需要考虑因素,但我会将验证逻辑放在app / validators / different_objects_validator.rb

class DifferentObjectsValidator < ActiveModel::Validator
  def different_objects
    errors.add(:different_objects, "cannot be less than quantity") unless
     self.quantity >= self.different_objects
  end

end

表格数据是:

<%= form_tag result_quote_request_path, :method => :get do %>
      Base    <%= number_field :quote, :base, :size => 5 %>
      Height    <%= number_field :quote, :height, :size => 5 %>
      Quantity    <%= number_field :quote, :quantity, :size => 5, :value => 1 %>
      Different source objects   <%= number_field :quote, :different_objects, :size => 5, :value => 1 %>
    <%= submit_tag "find", :name => nil %>
<% end -%>

然后

class Quote  < ActiveRecord::Base
  include ActiveModel::Validations

  validates :different_objects, different_objects_valid => true

重新启动瘦Web服务器后,会导致:

  

ActionView :: Template :: Error(未定义的方法`name'代表nil:NilClass):

但这有点像红色鲱鱼:没有验证,表单会生成搜索结果

我意识到这里可能有很多不妥之处。我无法正确关注调用验证的位置以及无表状态。

1 个答案:

答案 0 :(得分:0)

您的错误来自以下内容:

<%= submit_tag "find", :name => nil %>

简单地做

<%= submit_tag "find" %>