我的视图中有一个form_tag,其中嵌套了一些text_field_tag。我不希望用户编辑文本字段,所以我做了:disabled =>真。
问题: 如果我这样做:disabled => true,文本字段值不在params散列中传递,而如果我这样做:readonly =>如果它确实以params hash
发送值这是预期的吗?如果是,那么在文档中没有提到这一点。如果没有,那么我应该在GitHub中提出问题吗?
答案 0 :(得分:25)
是的,这是预期的行为。 Rails文档中可能没有提及,因为disabled
和readonly
控件行为是由W3C规范定义的。
请参阅W3C documentation for Disabled controls,其中的状态"禁用的控件无法成功"。 A"成功"控制被定义为有效的'提交。"在Rails中的输入字段上设置disabled
到true
不会导致它不被提交。
然而,只读控件可以成功。因此,如果您希望提交值但不可修改,则应将readonly
设置为true
。
答案 1 :(得分:5)
是的,这是预期的,但它与Rails无关。根据HTML5规范,提交表单时会跳过disabled
的表单字段(请参阅4.10.22.4 Constructing the form data set)。
如果您不希望用户能够编辑该字段,但仍希望其数据与表单一起提交,则应使用readonly
属性,例如:
<%= text_field_tag 'year', '2015', readonly: true %>