0

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

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

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

随后,虽然有些验证是一次性的,并不需要真正分解,但我会将验证逻辑放在 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(nil:NilClass 的未定义方法“名称”):

但这有点牵强附会:没有验证,表单会生成搜索结果

我意识到这里可能有很多事情是错误的。我无法正确关注调用验证的位置以及无表状态。

4

1 回答 1

0

您的错误来自以下内容:

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

简单地做

<%= submit_tag "find" %>
于 2013-07-12T11:14:54.227 回答