如果禁用,Rails form_tag不会发送params:true

时间:2015-07-21 18:03:54

标签: ruby-on-rails-4

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

问题: 如果我这样做:disabled => true,文本字段值不在params散列中传递,而如果我这样做:readonly =>如果它确实以params hash

发送值

这是预期的吗?如果是,那么在文档中没有提到这一点。如果没有,那么我应该在GitHub中提出问题吗?

2 个答案:

答案 0 :(得分:25)

是的,这是预期的行为。 Rails文档中可能没有提及,因为disabledreadonly控件行为是由W3C规范定义的。

请参阅W3C documentation for Disabled controls,其中的状态"禁用的控件无法成功"。 A"成功"控制被定义为有效的'提交。"在Rails中的输入字段上设置disabledtrue不会导致它不被提交。

然而,只读控件可以成功。因此,如果您希望提交值但不可修改,则应将readonly设置为true

答案 1 :(得分:5)

是的,这是预期的,但它与Rails无关。根据HTML5规范,提交表单时会跳过disabled的表单字段(请参阅4.10.22.4 Constructing the form data set)。

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

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