Удерживать оба параметра флажка Decendant связанными с родительским input_field - PullRequest
0 голосов
/ 21 мая 2019

Существует select_tag для выбора клиента.Когда пользователь выбрал клиента, он сгенерирует дочерний флажок_от ниже select_tag.

. Пользователь может выбрать клиента и установить флажок для обоих потомков или только для одного клиента.

Если пользователь выбирает толькоЗатем клиент выполнил поиск. Он получит результаты, и значение select_tag (param) также будет сохранено в теге выбора после обновления.

Но проблема в том, что если я попытаюсь получить оба select_tag и checkbox_tag данные, он будет генерировать данные, но оба параметра пропали.Мне нужно сохранить оба параметра после результатов поиска.

Это мой взгляд

.row
            .col-md-3
              = label_tag "Customer/Supplier Name"
              = select_tag "search_customer_supplier[id]", options_from_collection_for_select(Organization.customers_and_suppliers, :id, :name, params.dig('search_customer_supplier', 'id')), class: "form-control parent_class chosen-select", id: "search_registered_customers", include_blank: true
              .col-md-10.small_scale_margin-top2#check_children_wrapper.hide
                = label_tag "Descendent"
                = check_box_tag "organization_children", "true", params.dig('search_customer_supplier', 'organization_children')&.include?('true')

Это мой код контроллера относительно флажка

def customer_supplier_report
    Organization
    Address
    ContactNumber
    refined_query = ""
    if params[:search].present? or params[:excel_report].present?

      search_customer_supplier = params[:search_customer_supplier]
      if params[:organization_children].present? and search_customer_supplier["id"].present?
        organization_id = search_customer_supplier["id"]
        organization = Organization.find(organization_id)
        anchestor_ids = organization.anchestors.map{|o| o[:member].id }
        search_customer_supplier["id"] = "(#{anchestor_ids.join(' OR ')})" if anchestor_ids.any?
        end

      params[:search_customer_supplier]['accounts_dealer_types.dealer_code'] = params[:search_customer_supplier]['accounts_dealer_types.dealer_code'].join(" OR ") if params[:search_customer_supplier]['accounts_dealer_types.dealer_code'].present?

      customer_report = params[:search_customer_supplier].map { |k, v| "#{k}:#{v}" if v.present? }.compact

1 Ответ

0 голосов
/ 22 мая 2019

Это противоположно вашему предыдущему вопросу.

Имя вашего check_box_tag параметра 'organization_children', поэтому оно будет передано в params[:organization_children].Вы обращаетесь к нему правильно в контроллере, сделайте то же самое в представлении:

= check_box_tag "organization_children", "true", params[:organization_children].present?
...