nested_form gem で問題が発生しました。
カテゴリ、グループ、パラメータ、オファー、値の 5 つのモデルがあります。したがって、オファーはカテゴリに属し、値はオファーとパラメータに属し、パラメータはグループにまとめられ、グループはカテゴリに属します。
典型的な例は
カテゴリ: 車 グループ: エンジン パラメータ パラメータ: ボリューム パラメータ:パワー グループ: プロデューサー パラメータ: Producer_name パラメータ: 年 パラメーター: 国 カテゴリ: 自転車 グループ: 技術パラメータ パラメータ: 車輪の直径 パラメータ: 重量 グループ: プロデューサー パラメータ: Producer_name パラメータ: 年 パラメーター: 国
そして、このパラメータの値はオファーに属します。複雑に見えるかもしれませんが、私にはそれを非常に明確に図解したように思えます。ユーザー登録時に多くのオファーを作成できるフォームを作成したいと考えています。カテゴリ、パラメータ、およびグループは固定されています。今私のテンプレートは次のとおりです。
= simple_nested_form_for @user
Category.all.each do |category|
span= category.name
= f.simple_fields_for :offers do |f_offer|
= f_offer.input :category_id, :as => :hidden
- category.groups.each do |group|
span= group.name
- if f_offer.object.values.where("parameter_id IN (?)", group.parameters).empty?
- group.parameters.each do |parameter|
- variant.values.build(:parameter_id => parameter.id)
/ In this partial inputs for offer values in format parameter_name: input_field
= render :partial => 'values', :locals => { :f_offer => f_offer,
:f_group => group }
= f_variant.link_to_remove t("views.remove_variant")
= f.link_to_add "Add offer", :offers
ほとんど問題なく動作しますが、「オファーを追加」リンクをクリックすると問題が発生します。最後のカテゴリのパラメータを使用してフォームが追加されます。上記の例で、車のカテゴリの [オファーを追加] をクリックすると、車ではなく自転車のパラメータがたくさん表示されます。カテゴリを simple_fields_for などに渡す必要があるように見えますが、その方法がわかりません。
誰でも私を助けることができますか?