【问题标题】:Validations on tableless form fields in rails 3Rails 3中无表格表单字段的验证
【发布时间】:2013-07-12 10:39:30
【问题描述】:

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

我的最终目标是通过以下 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

重启瘦网络服务器后,结果如下:

ActionView::Template::Error(nil:NilClass 的未定义方法“名称”):

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

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

【问题讨论】:

  • 为什么你在表单提交中给了:name =&gt; nil

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


【解决方案1】:

您的错误来自以下方面:

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

简单地做

<%= submit_tag "find" %>

【讨论】:

  • 很遗憾没有。它不是错误的来源;在目标路径上调用未定义的方法。如果没有验证,表单会生成搜索结果。通过验证删除有问题的命题仍然会导致相同的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
相关资源
最近更新 更多