Ich versuche, E-Commerce-Shop mit RoR zu machen. Die meisten der benötigten Funktionen habe ich ohne Probleme erledigt, aber jetzt brauche ich wirklich jemandes Hilfe hier.Schienen erstellen dynamische Attribute
Ich möchte Produktattribute, wie eine "Größe", "Gewicht", "Farbe", etc. Am einfachsten ist es, diese Attribute in Modell Migration zu definieren, aber jetzt möchte ich Attribute dynamisch machen. Das Hauptproblem besteht darin, dass ich beim Erstellen eines Produkts nicht alle Parameter mit Attributen aus Formularen abrufen kann.
Produkte/new.html.erb
<%= form_for @product, url: admin_products_path(@product) do |f| %>
<%= f.label :name, 'Name' %>
<%= f.text_field :name, class: "form-control" %>
<%= text_field_tag "product[product_feature][]" %>
<%= text_field_tag "product[product_feature][]" %>
<%= f.submit "Submit" %>
<% end %>
Also, ich möchte viele Felder mit Attributnamen und -wert, füllen Sie sie und verwenden Sie diese params in der Steuerung erzeugen, um sie zu Interate und schließlich erstellen Produkteigenschaften.
Wie
params[:product_features].each do |k, v|
ProductFeature.create(name: k, value: v, product_id: product_id)
end
Alle Edelsteine, die mit dynamischen Attributen manipulieren können, sind nicht mit Rails arbeiten 5+, also muss ich Lösung für dieses Problem finden.
Ich habe sogar arbeiten einfache db-Lösung für diese, aber es ist unbequem, params zu erstellen. Hier ist es.
Product.rb
class Product < ApplicationRecord
has_many :product_features
has_many :features, :through => :product_features
end
ProductFeature.rb
class ProductFeature < ApplicationRecord
belongs_to :product
belongs_to :feature
end
Feature.rb
class Feature < ApplicationRecord
end
Klingt für mich wie ein verschachteltes Attribut dieses Problem lösen kann http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ ClassMethods.html –