1 Pytanie: Jak utworzyć dynamiczny plik eksportu CSV?

pytanie utworzone w Thu, Mar 28, 2019 12:00 AM

Stworzyłem prosty generator eksportu csv, ale staram się przekazać params created_at, a następnie eksportować w oparciu o 2 daty i eksportować rekordy między wybranymi datami.

Wyświetl:

<%= date_select :start_date, @start_date%>
<%= date_select :end_date, @end_date %>
<%= link_to("Generate Report", report_path(format: :csv) %>

Cont:

  def order_report
    @start_date = params[:start_date]
    @end_date = params[:end_date]
    @user_orders = Order.where(seller_id: current_user).where(order_status: 2).where(["date(created_at) BETWEEN ? AND ? ", @start_date, @end_date])

    respond_to do |format|
      format.html
      format.csv { send_data @user_orders.to_csv, filename: "orders-#{Date.today}.csv" }
    end
  end

model :

def self.to_csv
    CSV.generate do |csv|
      csv << %w{ id created_at order_type order_price }
      all.each do |order|
        csv << [order.id, order.ctreated_at, order.order_type, order.order_price ]
      end
    end
  end

Ale wynik jest NULL:

  

SELECT "zamówienia". * FROM "zamówienia" GDZIE "zamówienia". "sprzedawca_id" = 1 USD I   „zamówienia”. „order_status” = 2 $AND (data (created_at) MIĘDZY NULL I   NULL)

Kiedy eksportuję, nic nie eksportuje, ale nagłówki.

Jak mogę to z powodzeniem wykonać?

    
0
1 odpowiedzi                              1                         

Zasadniczo po kliknięciu dowolnego łącza wysyła żądanie. Aby przekazać parametr w żądaniu get, musisz użyć parametru zapytania .

Istnieje wiele sposobów przekazywania parametrów, ale pokażę ci prostą ścieżkę

Proste rozwiązanie polega na zastąpieniu kodu w celu użycia formularza i przesłania

<%= form_tag report_path(format: :csv), method: :get do %>
  <%= date_select :start_date, @start_date%>
  <%= date_select :end_date, @end_date %>
  <%= submit_button "Generate Report" %>
<% end %>

Jeśli nie chcesz używać formularza, mogę zaktualizować odpowiedź, podając inne rozwiązanie.

    
0
2019-03-28 12: 06: 32Z
  1. Hm, który wygląda dobrze, jeśli zaktualizuję mój kontroler. Skończyło się na zrobieniu czegoś takiego na podstawie tego posta: stackoverflow.com/questions/49051223/…
    2019-03-28 12: 10: 30Z
  2. Więc spróbowałem wykonać form_tag i got "nie można cytować ActionController :: Parameters" .... i jak nie używać formularza; Czy zaproponowałbyś lepszy sposób na osiągnięcie tego?
    2019-03-28 12: 13: 14Z
  3. Czy możesz udostępnić dziennik?
    2019-03-28 13: 29: 42Z
źródło umieszczone tutaj