-1

简短:如何拦截 form_for 选择的值以修改提交时发送到服务器的值?

完整版:我在一个具有 ext_id 属性的对象的部分内部有一个 form_for(它是脚手架生成的默认 _form 部分)。

我对其进行了如下修改:表单中有 2 个选择(A 和 B)。B 默认隐藏。A 只能是真或假。如果 A 为真,则必须将 ext_id 设置为默认值 X。如果用户在 A 上选择假,则会出现 B,然后根据 B 值设置 ext_id(我为此使用了 jQuery)。

现在的问题是:如果表单用于创建,如果 A 为假,则 ext_id 设置为 B 值,如果 A 为真,则未设置。我想如果在这种情况下未设置,我想我可以使用某种 ActiveRecord 验证将其设置为默认值,但是,如果它被用于编辑并且我将 A 更改为隐藏 B,B 旧值仍然被选中,所以 ext_id永远不会更改为“未设置”。

4

2 回答 2

1

在这种情况下,我不会使用 select A 或 B 将数据提交到表单。我只会使用它们来设置 jQuery 中隐藏字段的值。我想你知道该怎么做。

f.hidden_field :ext_id, :value => "default_value"

$('#your_model_ext_id').val(...the value from A or B selects...)
于 2012-06-28T12:03:07.457 回答
0

显然这比看起来要容易得多。脚手架生成器在控制器中为创建(新建和创建)和编辑(编辑和更新)创建 2 个操作。第一个用于生成表单,另一个用于处理它,因此当您在创建/更新时收到提交的数据时,它就像对提交的数据做任何您想做的事情一样简单。

于 2012-06-28T12:56:44.023 回答