我在Rails上4.我正在制作订阅模式,用户在订阅中构建他们想要的产品。我在这里有很多模型,但我觉得在我的问题中很重要的是Product
模型,Subscription
模型和SubscriptionItem
连接模型。产品在数据库中设置,用户可以选择他们想要添加到订阅的数量,因此可以选择连接模型。
我的产品.rb
class Product < ActiveRecord::Base
has_many :subscription_items
has_many :subscriptions, through: :subscription_items
end
我的Subscription.rb
class Subscription < ActiveRecord::Base
belongs_to :user
belongs_to :plan
has_many :subscription_items
has_many :products, through: :subscription_items
validates :name, presence: true
accepts_nested_attributes_for :subscription_items
end
我的SubscriptionItem加入
class SubscriptionItem < ActiveRecord::Base
belongs_to :subscription
belongs_to :product
end
在我的新订阅视图中,我希望用户只需选中复选框即可选择他们想要的产品...
我目前有......
<div class="form-group">
<h3>Choose your items</h3>
<div class="products">
<% @products.each do |product| %>
<%= f.fields_for :subscription_items do |p| %>
<%= p.label :product_id, product.name.titleize %>
<%= p.check_box :product_id, product.id %>
<%= end %>
<% end %>
</div>
</div>
我的Subscriptions
控制器中的新方法和创建方法
def new
@plans = Plan.all
@subscription = Subscription.new
@products = Product.all
@subscription.subscription_items.build
end
def create
@user = User.find(params[:user_id])
@subscription = @user.subscriptions.build(sub_params)
if @subscription.save
flash[:notice] = "Your subscription has been created."
redirect_to @user
else
flash[:alert] = "There was a problem and your subscription could not be created."
render "new"
end
end
我强烈的参与......
def sub_params
params.require(:subscription).permit(:name, :plan_id, subscription_item_attributes: [:id, :product_id])
end
当我尝试创建订阅时,不会创建subscription_items。有什么建议吗?