Ruby on rails 4 如果禁用,Rails form_标记不发送参数:true

Ruby on rails 4 如果禁用,Rails form_标记不发送参数:true,ruby-on-rails-4,Ruby On Rails 4,我的视图中有一个,其中有几个嵌套。我不希望用户编辑文本字段,所以我这样做了:disabled=>true 问题是: 如果我执行:disabled=>true,则文本字段值不会在params散列中传递,而如果执行:readonly=>true,则会在params散列中发送值 这是预期的吗?如果是,则文档中未提及这一点。如果不是,那么我应该在GitHub中提交一个问题吗?是的,这是预期的,但与Rails无关。根据HTML5规范,提交表单时,将跳过禁用的表单字段(请参阅) 如果您不希望用户能够编辑该字

我的视图中有一个,其中有几个嵌套。我不希望用户编辑文本字段,所以我这样做了:disabled=>true

问题是: 如果我执行:disabled=>true,则文本字段值不会在params散列中传递,而如果执行:readonly=>true,则会在params散列中发送值


这是预期的吗?如果是,则文档中未提及这一点。如果不是,那么我应该在GitHub中提交一个问题吗?

是的,这是预期的,但与Rails无关。根据HTML5规范,提交表单时,将跳过禁用的表单字段(请参阅)

如果您不希望用户能够编辑该字段,但仍希望其数据与表单一起提交,则应使用
只读属性,例如:

<%= text_field_tag 'year', '2015', readonly: true %>

是的,这是预期的行为。Rails文档中可能没有提到它,因为W3C规范定义了
禁用
只读
控制行为

请参阅,其中说明“禁用的控件无法成功”。“成功”控件定义为“有效”提交。在Rails中的输入字段上将
disabled
设置为
true
,不会导致该控件不提交


但是,只读控件可能会成功。因此,如果希望提交值但不可编辑,则应使用
readonly
设置为
true

Yes。这是预期的行为。值得注意的是,根据Mozilla的说法,
readonly
是“如果type属性的值是隐藏的、范围、颜色、复选框、单选、文件或按钮类型(如button或submit),”但在选择标签的情况下,它没有帮助。