【发布时间】:2017-02-14 12:32:44
【问题描述】:
我正在尝试使用 RoR 制作电子商务商店。大多数必需的功能我都没有任何问题,但现在我真的需要有人帮助。
我想制作产品属性,例如“尺寸”、“重量”、“颜色”等。 最简单的方法是在模型迁移中定义这个属性,但现在我想让属性动态化。主要问题是我在尝试创建产品时无法从表单中获取所有带有属性的参数。
产品/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 %>
所以,我想生成许多带有属性名称和值的字段,填充它们并在控制器中使用这些参数来交互它们,最后创建产品属性。
喜欢
params[:product_features].each do |k, v|
ProductFeature.create(name: k, value: v, product_id: product_id)
end
所有可以使用动态属性操作的 gem 都不适用于 Rails 5+,所以我需要找到解决这个问题的方法。
我什至为此提供了简单的数据库解决方案,但是创建参数很不舒服。在这里。
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
【问题讨论】:
-
听起来像嵌套属性可以解决这个问题api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/…
标签: ruby-on-rails ruby ruby-on-rails-5 rails-activerecord