Versuchen Sie herauszufinden, wie Sie eine Menge Logik aus der Sicht in Controller/Modell verschieben können.Verschieben der Funktion von der Ansicht zum Controller Rails 5
(ich glaube, es angenommen hat, in dem Modell gehen?)
Show.html.erb
<div class="collectionList">
<% @user.collections.each do |d| %>
<%= d.name %>
Distinct Cards: <%= d.card_collections.count %> <br />
Total Cards:
<% d.card_collections.each do |x| %>
<% y = [] %>
<% y << x.card_counts %>
<% y.flatten! %>
<% y = y.inject(0){|sum,x| sum + x } %>
<%= y %>
<% end %>
<% if d.public %> Public <% end %><br />
<% end %>
</div>
Jeder Benutzer eine Sammlung hat, die jede Kollektion eine card_collection haben kann, die jeweils von denen kann eine Karte haben.
Die Anzahl der 'card_collections' ist die Anzahl der Karten in deinem Deck. Die Summe von "card_collections.card_counts" ist die Gesamtanzahl der Karten. Ich denke, wenn ich es als 'Summe der Karten' und 'Anzahl der Karten' im Modell definiere, kann ich es so nennen, aber ich bin mir nicht sicher, wie.
Ich denke auch, meine Logik wäre einfacher, wenn ich es in das Modell verschieben könnte, da ich pluck/sum verwenden könnte, um die Ergebnisse schneller zu bekommen?
Sammlung
class Collection < ApplicationRecord
belongs_to :user
has_many :card_collections
has_many :cards, through: :card_collections
# validates :user_id, presence: true
end
Karte
class Card < ApplicationRecord
has_many :card_collections
has_many :collections, through: :card_collections
belongs_to :deck, optional: true
end
CardCollection
class CardCollection < ApplicationRecord
belongs_to :collection
belongs_to :card
end
können Sie bitte Beziehungen zwischen Tabellen (in has-many-toys-Struktur), show-Methode in Controller und Felder im Modell. –