Rails5:fields_for仅在需要且已选中复选框的情况下

时间:2019-11-18 21:15:50

标签: ruby-on-rails

我需要实现一个包含功能列表(复选框,复选框已选中=功能已启用)的表单,但是如果选中了功能(例如,如果用户选中“ additional_notification_email”,则某些功能还具有其他选项)他必须提供新的电子邮件地址)。 我使用simple_form。

我的问题是:如何: •如果选中复选框,则需要其他选项 •如果没有选择任何选项(或功能没有其他选项),则传递给控制器​​为空的散列,如果选项存在,则传递到{“ additional_email”:“ test@test.com”)?

当前针对我使用的每个功能:

= f.fields_for "additional_notification_email" do |feature|
  .form-group#additional_notification_email
    = feature.check_box :status, id: "additional_notification_email"
    = feature.label :name, "additional_notification_email"
    = feature.fields_for :options do |o|
      = o.input......

1 个答案:

答案 0 :(得分:0)

我做了什么(我还不知道这是否是我的解决方案...。) 我添加了一些jQuery脚本,如下所示,以切换选项并在需要时将字段值设置为nil。

我还在等待更好的解决方案:)

function toggleOptions(){
    $(":checkbox").change(function() {
      var feature_name = $(this).attr('id')
      var feature = $('#' + feature_name + '')
      if (this.checked){
        console.log("checked")
      }
      else {
        console.log("not checked")
        feature.find(".email").val(null)
      }
      feature.find(".form-group").toggle()
    })
  }