名前属性を持つUserモデルがあるとします。 複数のテキストフィールドを持つフォームを作成して、データベースに複数のレコードを作成したいとします。私はform_tagを使ってこれを達成することができましたが、form_forを使ってこれを行う方法はありますか?1つのモデルの複数のレコードを1つの形式で作成する
-1
A
答えて
1
form_for
でこれを行うには可能であるが、これは実際には単一モデルのインスタンスに関連する形ではないので、あなたは本当に、すべての名前は属性である必要がありますform_for
ようにそれを行うにはform_tag
に固執する必要があります。
あなたは(あなたのモデルに)行うことができます...
attr_accessor :name1, :name2, :name3
これは、追加の名前は、それらがdbテーブル内の列じゃないにもかかわらず、受け入れられるようになります。
その後、あなたの方法を作る...
def create
%i(name name1 name2 name3).each |this_name|
User.create(name: user_params(this_name)) if user_params(this_name).present?
end
end
def user_params
params.require(:user).permit(:name, :name1, :name2, :name3)
end
+0
私は私のために維持しやすいように私は私のform_tagに固執します。スティーブありがとう! – Ancinek
ユーザー名と呼ばれる別のモデルを作成し、あなたのform_for内に複数のネストされたフォームを作ることができます。 – luissimo