こんにちは私はネストされた属性を使用して機能を実装しようとしています。ハンディキャップを作成するためのフォーム(Customer用)では、すべての顧客のリーグのリストを表示したいと思います。フォームがCreateアクションでサブミットされたら、@ handicap.saveを使用すると、ハンディキャップおよびリーグ(フォームで選択されたリーグ)も含まれます。多くの人から多くの人へのネストされた属性のファイル
唯一の解決策はネストされた属性を使用しないことでした。 新しい方法では、私は顧客からすべての障害を受け取り、フォームに表示します。ですからフォームがcreateアクションでsubmitされたら、私は検証を行います。顧客の@handicapレコードを作成し、 を手作業で作成します。
#New/Create actions in the handicaps controller
def new
@leagues = @customer.leagues
end
def create
handicap = @customer.handicaps.build(handicap_params)
if handicap.save
associations = []
params[:league_ids].each do |id|
associations << LeagueHandicap.new(handicap_id: @handicap.id, league_id: id)
end
LeagueHandicap.import(associations)
end
end
私はhandicap.saveを実行し、自動的にリーグハンディキャップの関連付けを作成したいと思います。しかし、私はネストされた属性でそれを行う方法に手掛かりがありません。このようにすることはできますか?
私は、次のモデルがあります:
class Customer < ActiveRecord::Base
has_many :handicaps, dependent: :destroy
has_many :leagues, dependent: :destroy
end
class Handicap < ActiveRecord::Base
belongs_to :customer
has_many :league_handicaps
has_many :leagues, through: :league_handicaps, dependent: :destroy
end
class LeagueHandicap < ActiveRecord::Base
belongs_to :handicap
belongs_to :league
end
class League < ActiveRecord::Base
has_many :league_handicaps
has_many :handicaps, through: :league_handicaps, dependent: :destroy
end
(LeagueHandicap通じハンディキャップとリーグ間の多くの関係に多くの)
そして、どのようにして顧客の@リグをフォームに表示できますか?フォームが提出者の場合は、{handicap:{info_about handicap:{}、league_ids:[1、2、3]}}のようなものになります。私は、リーグをココアに正しく表示することは難しいと思う。私は以下のようなsumthingを使う必要があります:f.fields for:leagues do | builder | ? –
['collection_check_boxes'](http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_check_boxes)' f.collection_check_boxes(league_ids、League.all、:id、:)のようなものです。名前) ' –
素晴らしい作品です!しかし、私たちは右の編集のために同じ方法を使用できませんか? collection_check_boxesを使用すると、更新メソッドのチェックを変更しても、最後の関連付けを削除して新しいものを作成することはありません。レールにもそうするよう指示する方法はありますか?ハードコーディングする必要はありませんか? –