0

新しいレコードを作成するときに、関連付けられたモデルに保存されているデータを simple_form を使用してフォーム フィールドに入力したいと考えています。

class Game < ActiveRecord:Base
  has_many :events
  attr_accessible :name, :number_of_players
end

class Event < ActiveRecord:Base
  belongs_to :game
  attr_accessible :name, :number_of_players
end

ゲームが異なれば、チームに必要なプレーヤーの数も異なります (野球: 9、バスケットボール: 5、サッカー: 11)。

私のフォームでは、イベントを作成するときに、ユーザーがゲームを選択する関連ドロップダウンがあります。必要に応じてユーザーがオーバーライドできる、プレイヤー数のイベント フィールドを事前設定したいと考えています。たとえば、バスケットボールではフィールドに 5 が入力されますが、その特定のイベントが 3 対 3 のゲームである可能性があるため、ユーザーはそれを 3 に変更することを希望する場合があります。ゲームデータを変更したくありません。

基本的に、同じフォーム内で選択された関連モデル インスタンスの値に基づいて、フォームのデフォルト値を作成しようとしています。私は多くのアプローチを試みましたが、成功しませんでした。

4

1 に答える 1

0

どうですか:

<%= f.input :number_of_players, :input_html => { :value => (number_of_players_value(f.object)} %>

number_of_players_valueヘルパー メソッドを定義します。

def number_of_players_value(event)
  event.new_record? ? event.game.number_of_players : event.number_of_players
end

このソリューションは、イベントにデフォルトでゲームが関連付けられていることを提供します。ユーザーが他のゲームを選択したときに number_of_players フィールドの内容を変更する必要がある場合は、これを実現するために何らかの JavaScript が必要です。

于 2013-06-12T08:05:15.157 に答える