我正在使用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,所以我可以走这条路,但我想弄清楚这一点。
答案 0 :(得分:3)
依靠HTML 5验证通常是不好的做法,因为许多浏览器不支持它们。为什么不将模型中的验证添加到rails模式中呢?
validates :color, inclusion: {in: ["red", "blue"]}