同じモデルを使用して、1回の送信で一度に複数のレコードを1つのビュー(new.erb.html)で作成したいと思います。
たとえば、タイトル、説明、日付などのフィールドを持つレポートというモデルがあります
追加ボタンをクリックしたときに、同じフォームを何度も部分的にレンダリングするにはどうすればよいですか?常に同じモデルアクションであるため、私はnastedモデルの問題ではないと思います。ありがとう
同じモデルを使用して、1回の送信で一度に複数のレコードを1つのビュー(new.erb.html)で作成したいと思います。
たとえば、タイトル、説明、日付などのフィールドを持つレポートというモデルがあります
追加ボタンをクリックしたときに、同じフォームを何度も部分的にレンダリングするにはどうすればよいですか?常に同じモデルアクションであるため、私はnastedモデルの問題ではないと思います。ありがとう
あなたはこのようなことをすることができます(私は自分でコードをテストしていません):
haml:
.model
%input{:name => "model[][name]"}
%input{:name => "model[][desc]"}
%input{:name => "model[][date]"}
.container
%button.add-model
js:
$('.add-model').click(function(){
$('.model').clone().first().appendTo('.container');
})
コントローラ:
def save
params[:model].each do |props|
Model.create(props)
end
end
私がしているのはJavaScript(jQuery)を使用することです-ページの読み込み時に、レンダリングされたフォームのみをJS変数(実際にはフォームではなく、フォーム内の入力)に保存し、[さらに追加]リンクをクリックしてフォームに入力を追加します。
また、一度に多くのオブジェクトを保存するには、手作りの入力名(model[][name]
値の配列を送信するためのようなもの)と、配列を受け入れるコントローラーが必要になります。