表单助手

时间:2016-04-19 10:24:54

标签: ruby-on-rails forms

我正在做一个可以在特定情况下禁用的集合选择。 但是当我禁用该表单内容时,我仍然会从select中选择一个值,这样即使它被禁用,我也可以使用该字段的值提交表单。

事实是,当表单未被禁用且用户必须选择某些内容时,它会向rails服务器发送用户输入的值。但是当它被禁用且用户无法选择时,它仍然应该将我选择的默认值发送给服务器,但它会发送nil。

这里是HAML中的collection_select:

= f.collection_select :billing, Task.billings.keys, :to_s, :humanize,
{ selected: ( "inherit" if @parent_task_id )  },
{ class: "form-control #{(Task.find(@parent_task_id).billing != "unspecified") if !@parent_task_id.nil?}",
disabled: ( (Task.find(@parent_task_id).billing != "unspecified") if !@parent_task_id.nil? ) }

当我查看浏览器中的元素时(在禁用的情况下),它表示"继承"被选中。

这是一个典型的rails规则,当表单内容被禁用时,它没有取得它的价值并将nil作为它的param发送给服务器吗?

谢谢你的帮助! :)

1 个答案:

答案 0 :(得分:2)

这是符合html规范的预期行为。在您的控制器中,您可以检查params散列中是否存在计费密钥,并相应地将其设置为您的值。