Как держать флажок истинного значения в рельсах после поиска - PullRequest
0 голосов
/ 15 мая 2019

Поиск работает нормально, но проблема в том, что когда я печатаю отчет Excel в соответствии с result.it показывает все значения в базе данных, фильтр не работает, тогда флажок истинных значений пропадает.Как сохранить параметры «Все адреса» после обновления страницы.

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

.col-md-3.small_scale_margin-top2
  = check_box_tag "all_address"
  = label_tag "Show All Addresses"

Это мой контроллер

    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
      #puts "======================================================================"
      # puts params[:search_customer_supplier]['accounts_dealer_types.dealer_code']

      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?

      # puts params[:search_customer_supplier]['accounts_dealer_types.dealer_code']

      customer_report = params[:search_customer_supplier].map { |k, v| "#{k}:#{v}" if v.present? }.compact
    else
      customer_report = ["accounts_dealer_types.dealer_code:(CUS OR SUP OR INDCUS OR INDSUP)"]
    end

    @all_address = params[:all_address].to_bool if params[:all_address].present?
    refined_query += customer_report.join(" AND ")
    params[:query] = refined_query
    # params[:per_page] = 500
    @customer_reports = Organization.search(params)

    puts "========================================================="
      puts @customer_reports
    puts "========================================================="

    @account_managers = User.where(active: true)
    respond_to do |format|
      if params[:excel_report].present?
        request.format = "xls"
        format.xls { set_attachment_name "customer_supplier_report.xls" }
      else
        format.html
      end
    end

  end

В моем контроллереэто соответствующая часть для флажка

@all_address = params[:all_address].to_bool if params[:all_address].present?

1 Ответ

1 голос
/ 15 мая 2019

Просто используйте @all_address для установки атрибута checked check_box_tag

 = check_box_tag "all_address", "1", @all_address

Примечание. Поскольку атрибут checked является третьим атрибутом в списке, вы также должны указать второй атрибут. "1" - это просто значение по умолчанию, которое в любом случае будет использоваться для второго аргумента.

...