simple_form验证与非ActiveRecord模型无法正常工作

时间:2014-07-19 16:51:20

标签: ruby-on-rails html5 validation

我正在使用simple_form和一个未存储在数据库中的vanilla 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,所以我可以走这条路,但我想弄清楚这一点。

1 个答案:

答案 0 :(得分:3)

依靠HTML 5验证通常是不好的做法,因为许多浏览器不支持它们。为什么不将模型中的验证添加到rails模式中呢?

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