したがって、テキストフィールドがあり、ユーザーはカンマで区切られたカードID(たとえば、1、2、3)を入力できます。このユーザーがフォームを送信するときに、送信する各IDの新しいレコードを作成したいと思います。つまり、1対1、1対2、1対3です。
どうすればいいですか?
ありがとうございました
したがって、テキストフィールドがあり、ユーザーはカンマで区切られたカードID(たとえば、1、2、3)を入力できます。このユーザーがフォームを送信するときに、送信する各IDの新しいレコードを作成したいと思います。つまり、1対1、1対2、1対3です。
どうすればいいですか?
ありがとうございました
試す
ModelName.create(input_string.split(',').map{ |i| { :field => i.strip } })
split
コンマで入力を分割し、マップはモデルのテキストフィールドが{ :field => i }
どこにあるかの配列を生成します。:field
コントローラーのテキストフィールドからの入力値を解析する必要があります。例えば:
def update
ids_input=params[:ids]
ids_input.split(',').each { |id|
Card.create(:some_id=>id,:other_column=>'some_value',:related_user=>current_user)
}
end
これを実現するには、特定のニーズに応じていくつかの方法があります。@rogal111が彼の答えで示唆しているように、コントローラーのすべてのエントリをループする1つの方法があります。
ユーザーとカードの間に 1 対多の関係がある場合は、おそらくそれが最善の方法ですが、ネストされたフォームを使用してそれを達成することをお勧めします。Ryan Bates は、そのスクリーンキャストについていくつかの優れたスクリーンキャストを作成しました。