【问题标题】:simple_form validation with non-ActiveRecord model not working right使用非 ActiveRecord 模型的 simple_form 验证无法正常工作
【发布时间】:2014-07-20 01:31:46
【问题描述】:

我将 simple_form 与未存储在数据库中的普通 Ruby 模型一起使用。它是一个与数据库中的模型交互的辅助模型。我可以将simple_form_for 与符号而不是实例一起使用(simple_form_for :vanilla_model),但遇到客户端验证问题(HTML5 required 属性)。

我的表单有一个选择框和一些单选按钮。我继续并在每个选项中选择一个选项,然后单击“提交”。浏览器不会提交表单,而是突出显示(不选择,只是聚焦)第一个单选按钮,就像我没有做出选择一样。

我可以通过禁用required 属性来解决这个问题,但我实际上想使用它。这是我的看法:

= simple_form_for(:my_model, url: my_path, method: :post) do |f|
  = f.input_field :number, collection: numbers
  = f.input_field :color, collection: colors, as: :radio_buttons
  = f.button :submit

以及生成的 HTML

<form action="/my/path" class="simple_form my_model" method="post">
  <div>
    ... utf8 & authenticity token ...
  </div>

  <select class="select required" id="my_model_number" name="my_model[number]">
    <option value=""></option>
    <option value="1">1</option>
    <option value="2">2</option>
  </select>

  <span class="radio">
    <input class="radio_buttons required" id="my_model_color_red" name="my_model[color]" type="radio" value="red" />
    <label class="collection_radio_buttons" for="my_model_color_red">Red</label>
  </span>
  <span class="radio">
    <input class="radio_buttons required" id="my_model_color_blue" name="my_model[color]" type="radio" value="blue" />
    <label class="collection_radio_buttons" for="my_model_color_blue">Blue</label>
  </span>

  <input class="button" name="commit" type="submit" value="Submit" />
</form>

有人可以指出我在这里缺少什么吗?我应该放弃尝试利用 HTML5 验证并使用 jQuery 吗?我在页面的其他部分使用 jQuery,所以我可以走那条路,但我想弄清楚这一点。

【问题讨论】:

    标签: ruby-on-rails html validation


    【解决方案1】:

    依赖 HTML 5 验证通常是不好的做法,因为许多浏览器不支持它们。为什么不将验证添加到您的模型中以按照 Rails 方式进行?

    validates :color, inclusion: {in: ["red", "blue"]}
    

    【讨论】:

    • validates 不适用于我的模型,因为它是一个普通的 Ruby 模型,不继承自任何 Rails 类/模块。我想保持这个模型相当轻巧。但是,您关于依赖 HTML5 验证的观点是正确的。我不妨使用 jQuery 进行验证,因为无论如何我都在其他地方使用它。谢谢
    • pivotallabs.com/form-backing-objects-for-fun-and-profit 这是一个链接,它解释了如何在没有活动记录的所有开销的情况下制作表单支持服务对象。
    • pivotallabs 的那篇文章值得一读。它填补了我缺乏的一些细节。
    猜你喜欢
    • 1970-01-01
    • 2013-06-20
    • 2013-09-22
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多