简短:如何拦截form_for select的值以修改提交时发送给服务器的值?
完整版:我在一个具有ext_id属性的对象的部分内部有一个form_for(它是由scaffold生成的默认_form部分)。
我已将其修改如下:表格(A和B)中有2个选项。 B默认隐藏。 A只能是真或假。如果A为真,则ext_id必须设置为默认值X.如果用户在A上选择false,则出现B,然后根据B值设置ext_id(我已经使用了jQuery)。
现在问题是:如果表单用于创建,则如果A为假,则将ext_id设置为B值,如果A为真,则将其设置为未设置。我想我可以使用某种ActiveRecord验证将它设置为默认值,如果它在这种情况下未设置,但是,如果它用于编辑而我更改A以隐藏B,B旧值仍然被选中,所以ext_id永远不会改变为“未设置”。
答案 0 :(得分:1)
在这种情况下,我不会使用选择A或B将数据提交到表单。我只使用它们来设置jQuery中隐藏字段的值。我想你知道怎么做。
f.hidden_field :ext_id, :value => "default_value"
$('#your_model_ext_id').val(...the value from A or B selects...)
答案 1 :(得分:0)
显然这比它看起来容易得多。脚手架生成器在控制器中创建2个动作,用于创建(新建和创建)和编辑(编辑和更新)。第一个用于生成表单,另一个用于处理表单,因此当您在创建/更新时收到提交的数据时,使用提交的数据就可以轻松完成任务。