Ich habe diese Railscast auf CSV/Excel Export verfolgt, aber ich habe ein bisschen ein Problem mit der Assoziationslogik.Schienen 5 - Export nach XL/CSV, aber durch Assoziationen
CSV Verwirrung/Ausgabe
In meinem Collection Model
Ich habe
class Collection < ApplicationRecord
belongs_to :user
has_many :card_collections
has_many :cards, through: :card_collections
def self.to_csv
attributes = %w{name}
CSV.generate(headers: true) do |csv|
csv << attributes
all.each do |collection|
csv << attributes.map{ |attr| collection.send(attr) }
end
end
end
# validates :user_id, presence: true
end
CSV Export
name
Demo 2
HEHHEHEEHHE
Name ist der Spaltenname Demo 2 ist die erste Sammlung HEHHEHEE HHE ist die zweite Sammlung
Ich brauche viel mehr Informationen, aber sobald ich 'einen' Parameter bekomme, kann ich von dort gehen. Aber das funktioniert nicht.'name 'gibt den Namen aller Sammlungen zurück, was nicht ganz das ist, was ich will, aber ich versuche auch Informationen über die' Karten 'in der Sammlung zu bekommen (referenziert von cards_collection) Um Ihnen ein Beispiel zu geben - In der Konsole würde ich eingeben: c = Collection.last
c.cards.first.name
und ich würde den ersten Kartennamen bekommen. Ich bin nicht sicher, ob ich diese self.to_csv Funktion in der Card_collections
Steuerung, der Cards
Steuerung oder was machen sollte. Ich habe viel von ähnlichen Fragen in Bezug auf CSV durch Assoziationen, aber nichts gefunden, das mich zu einer Lösung
Excel Verwirrung
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="Card Collection">
<Table>
<Row>
<Cell><Data ss:Type="String">Name</Data></Cell>
<Cell><Data ss:Type="String">Text</Data></Cell>
<Cell><Data ss:Type="String">Set</Data></Cell>
</Row>
<% @collection.card_collections.each do |collection| %>
<Row>
<Cell><Data ss:Type="String"><%= collection.card.name %></Data></Cell>
<Cell><Data ss:Type="String"><%= collection.card.text %></Data></Cell>
<Cell><Data ss:Type="String"><%= collection.card.set %></Data></Cell>
</Row>
<% end %>
</Table>
</Worksheet>
</Workbook>
ist ein Beispielskript geführt hat - ich dies in einem eingewickelt tatsächlich haben " jedes, weil, wenn sie Excel wählen, ich ihnen erlauben werde, ein Blatt pro "Sammlung" zu erhalten.
Sie eine Vorstellung von der Beziehung zu geben, meine Collection View
sieht aus wie -
<p id="notice"><%= notice %></p>
<div class="center"><%= @collection.name %></div><br />
<div class="center">Made By:
<strong>
<% if @collection.public %>
<%= link_to @collection.user.name, {:controller => "users", :action => "show", :id => @collection.user.id} %><br />
<% else %>
Anonymous<br />
<% end %>
</strong>
Total Cards: <%= @collection.card_collections.sum(:card_counts) %>
Distinct Cards: <%= @collection.card_collections.count %> <br />
</div>
<% @collection.card_collections.in_groups_of(3, false).each do |group| %>
<div class='row'>
<% group.each do |card| %>
<div class='col-sm-6 col-md-4'>
<%= image_tag(card.card.image_url, class: "img-responsive") %>
<h3>
<%= link_to card.card.name, {:controller => "cards", :action => "show", :id => card.card.id }%>
</h3>
<div><%= card_text_swap(card.card.text) %></div>
<div><span class='cardLabel'>Set</span>: <i class="ss ss-<%= card.card.set.downcase %> ss-3x ss-<%= card.card.rarity.downcase %>"></i>
<span class="setName"><%= card.card.setName %></span>
</div>
<div>Total in Collection: <%= card.card_counts %></div>
</div>
<% end %>
</div>
<% end %>
<%= link_to 'Edit', edit_collection_path(@collection) %> |
<%= link_to 'Back', collections_path %>
ich ursprünglich bei der Herstellung der Ansicht gekämpft, aber schließlich habe es funktioniert, und ich versuche, die gleiche Logik zu verwenden, im Excel-Export, aber es wird nicht richtig dargestellt. (Immediate Null-Fehler, so denke ich, das ein Fehler meinerseits sein könnte.)
Zusätzliche Informationen All dies innerhalb ActiveDirectory- gespeichert ist, und zur Zeit auf eine Ansicht gerendert wird. Ich bin mir nicht sicher, welche anderen Informationen ich anbieten sollte.
Neue Excel-Ausgabe
Collections_Controller
def show
@collection = Collection.find(params[:id])
respond_to do |format|
format.html
format.csv { render text: @collection.to_csv }
format.xls { send_data @collection.to_csv(col_sep: "\t") }
end
end
Ansicht
<%= link_to "CSV", collection_path(format: "csv") %> |
<%= link_to "Excel", collection_path(format: "xls") %>
CSV arbeitet jetzt - Excel ist es nicht.
Fehler bereitgestellt:
ArgumentError in CollectionsController#show
wrong number of arguments (given 1, expected 0)
Was möchten Sie in der CSV-Datei erhalten? –
@ZaurAmikishiyev Eine grundlegende Menge an Informationen wäre CardName, und CardSet 'c.card_collections.first.card.name' und' c.card_collections.first.card.set' ist, wie ich diese in der Rails-Konsole erhalten würde. Die'Ansammlungsansicht' zeigt, wie ich sie zur Ansicht – DNorthrup
aufrufe. Sie müssen eine Sammlungs_ID an Sammelpfad übergeben und nur das Format –