2017-02-14 4 views
0

私はRoRで電子商取引の店を作ろうとしています。必要な機能のほとんどは何の問題もありませんでしたが、今では本当に誰かの助けが必要です。Railsは動的な属性を作成します

"Size"、 "Weight"、 "Color"などの商品属性を作成したいと思います。 モデルの移行でこの属性を定義するのが最も簡単ですが、今は属性を動的にしたいと考えています。主な問題は、製品を作成しようとすると、フォームの属性を持つすべてのパラメータを取得できないということです。

製品/ 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 %> 

、私は、属性名と値を持つ多くのフィールドを生成し、それらを記入し、それらをinterate、最終的に製品の属性を作成するには、コントローラでは、これらのparamsを使用します。

params[:product_features].each do |k, v| 
    ProductFeature.create(name: k, value: v, product_id: product_id) 
end 

のような動的な属性を操作することができますすべての宝石は、Railsの5+で作業していないので、私はこの問題の解決策を見つける必要があります。

私はこれのために単純なdbソリューションを使っていますが、paramsを作成するのは不快です。ここにあります。相続人

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 
+0

のようなものは、私には聞こえClassMethods.html –

答えて

-1

速いですたとえば私は

class Product 
     belongs_to :collection 
    end 

    class Collection 
     has_many :products 
    end 

を発見し、ネストされた属性は、このhttp://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/を解決できるように、あなたのビューでこの

<%= collection_select(:product, :collection_id, Collection.all, :id, :name) %> 
関連する問題