【问题标题】:update attributes in dynamic form rails更新动态表单中的属性
【发布时间】:2014-01-04 13:40:20
【问题描述】:

我有带有条件属性的动态表单。

例如如果单选按钮“condition1”被选中,当“price”字段通过jQuery动态隐藏时,“percentage”字段出现。

假设我使用“condition1”单选框创建记录并设置“percentage”值。然后,我决定更新记录,并禁用“condition1”,所以百分比字段隐藏,我为“price”设置了新值。

问题是,如果我禁用“condition1”,“percentage”参数仍然存在,而我需要的是“price”或“percentage”参数。我可以在点击时使用 jQuery 删除属性(),但这是不好的用户体验,因为在某些领域我有多行文本区域,如果他们不小心点击了单选按钮,我不想强​​迫用户再次编写所有内容。

我尝试玩 ActiveModel::Dirty,但没有运气

在对象控制器的编辑动作中

   if @object.condition_changed? && @object.condition_was == "condition1"
      @object.attribute(:percentage, nil)
    end

【问题讨论】:

  • 在隐藏这些元素之前,只需将 disabled 属性设置为 true,这样就不会将值提交到服务器,如果再次显示文本仍保留在那里,您只需将 disabled 属性设置为 false 即可
  • 非常感谢 NitinJ,这是非常好的观点。我试过了,但我没有达到我的目标。如果我更新记录并在单选按钮中选择另一个选项,如果我保存更改,旧值仍将保留在数据库中。我需要清除数据库中特定字段的数据,如果它们与表单中选择的选项无关,以防止在数据库中存储不正确的数据
  • 你可以像 after_update 这样运行更新后回调: set_nil_to_unrequired_field now def set_nil_to_unrequired_field update_column('your field ', nil) if "other field is present" end
  • 是的,这成功了。 update_column('percentage', nil) if condition == "condition1"。您可以添加您的答案以接受吗?

标签: ruby-on-rails forms ruby-on-rails-3.2 ruby-on-rails-4 dynamic-forms


【解决方案1】:

你可以像

一样运行更新后回调
after_update: set_nil_to_unrequired_field 

def set_nil_to_unrequired_field 
 update_column('your field ', nil) if "other field is present"
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 2021-10-19
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多