2016-10-10 3 views
3

Ich bin neu in Ruby auf Schienen, ich möchte meine Ansichtstabelle im Excel-Format exportieren, habe ich so viele Male versucht, aber ich kann View-Tabelle nicht exportieren. Ich habe eine Ansicht (Employee_Information) in meiner Datenbank und alle Daten, die auf der Seite view.html.erb angezeigt werden, gibt es kein spezifisches Modell für die Employee_Information-Ansicht. Ich habe dieses Tutorial "http://railscasts.com/episodes/362-exporting-csv-and-excel" folgen, aber ich dieses Tutorial exportieren Daten in Excel von View-Tabelle mit Hilfe von Modell, ich möchte ohne Modell.wie ich meine View-Tabelle in Excel-Format konvertieren

**excel_file.html.erb** 
`<table border=1> 
    <tr> 
    <th>Employee ID</th> 
    <th>Name</th> 
    <th>Gender</th> 
    <th>Date of birth</th> 
    <th>Email</th> 
    <th>Marital status</th> 
    <th>Father Name</th> 
    <th>Spouse Name</th> 
    <th>Contact</th> 
    <th>Employee Address</th> 
    <th>Account Number</th> 
    <th>IFSC Code</th> 
    <th>PAN Number</th> 
    <th>Client Name</th> 
    <th>Designation</th> 
    <th>Employee Type</th> 
    <th>Status</th> 
    <th>Joining date</th> 
    <th>End date</th> 
    <th>Offer CTC</th> 
    <th>Client Address</th>  
    </tr> 
    <% @employees.each do |emp| %> 
    <tr> 
     <th><%= emp['employee_id'] %></th> 
     <th><%= emp['full_name'] %></th> 
     <th><%= emp['gender'] %></th> 
     <th><%= emp['dob_date'] %></th> 
     <th><%= emp['email'] %></th> 
     <th><%= emp['married_status'] %></th> 
     <th> <%= emp['father_name'] %></th> 
     <th><%= emp['spouse_name'] %></th> 
     <th><%= emp['contact_phone'] %></th> 
     <th><%= emp['candidate_address2'] %></th> 
     <th><%= emp['bank_ac'] %></th> 
     <th><%= emp['bank_ifsc'] %></th> 
     <th><%= emp['pan_number'] %></th> 
     <th><%= emp['company_name'] %></th> 
     <th><%= emp['designation'] %></th> 
     <th> 
      <% if emp['employee_type'] == 0 %> 
       Internal Employee 
      <% elsif emp['employee_type'] == 1 || emp['employee_type'] == 2 || emp['employee_type'] == 3 %> 
       Contract Consultant Employee 
      <% elsif emp['employee_type'] == 4 %> 
       Permanent Consultant Employee 
      <% elseif emp['employee_type'] == 5 %> 
       Past Employee 
      <% end %> 
     </th> 
     <th> 
      <% if emp['status'] == 0 %> 
       Pending 
      <% elsif emp['status'] == 1 %> 
       Approved 
      <% elsif emp['status'] == 2 %> 
       Cancelled 
      <% elsif emp['status'] == 3 %> 
       Accepted 
      <% elsif emp['status'] == 4 %> 
       Rejected 
      <% elsif emp['status'] == 5 %> 
       Onboarded 
      <% elsif emp['status'] == 6 %> 
       Offboarded 
      <% end %> 
     </th> 
     <th><%= emp['joining_date'] %></th> 
     <th><%= emp['work_end_date'] %></th> 
     <th><%= emp['ctc'] %></th> 
     <th><%= emp['client_address2']%></th> 
    </tr> 
    <% end %> 
</table> 
<br><br>` 

**hr_controller.rb**`def excel_file 
     @employees = MysqlConnection.connection.select_all("SELECT * FROM   Employee_Information where employee_type IN(0)") 
     #@employees = MysqlConnection.connection.select_all("SELECT * FROM Employee_Information where employee_type IN(1,2,3)") 
     respond_to do |format| 
      format.html 
      format.csv { send_data @employees.to_csv } 
     end 
    end` 
**application.rb** 



    require File.expand_path('../boot', __FILE__) 
    # add HR role 
    require "csv" 

Ich habe ein Dateimodul "employee_information.rb" in lib Ordner erstellt

module EmployeeInformation  
     def self.to_csv(options = {}) 
     CSV.generate(options) do |csv| 
      csv << column_names 
      all.each do |product| 
       csv << product.attributes.values_at(*column_names) 
      end 
     end 
    end end 
+0

Warum möchten Sie ein Modell verwenden? –

Antwort

0

dies eine Ansicht Tisch sein muss? Wenn Sie dies nicht zu irgendeiner Form machen, gibt es keine Möglichkeit, dies zu tun, ohne Javascript zu verwenden, um das DOM zu analysieren (oder vielmehr auf alle Elemente im DOM zuzugreifen) und den Wert zu erhalten und eine Anfrage an einen Controller mit den Informationen aus der Analyse zu stellen DOM. Wenn Sie dies zu einem Formular machen könnten, wäre es viel einfacher für Sie, diese Informationen in Excel zu exportieren. Wie auch immer, es gibt wirklich keinen anderen Weg, dies ohne irgendein Modell zu tun.

Verwandte Themen