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 などに渡す必要があるように見えますが、その方法がわかりません。
誰でも私を助けることができますか?