JavaScriptで動的にform_tag
をマイページに追加する方法を解説しています。私はおそらく通常のフォームを追加する方法を考え出すことができますが、私はフォームを提出すると便利な "authenticity_token"を得ることができるようにform_tagsを追加することをお勧めします。ここ が私の見解です...Ruby on RailsでJavaScriptを使用してform_tagを作成して削除する
show.html.erb:私はform_tagを追加する方法を知りませんが
<button id="add-new-form">Add invite</button>
<div class="invite-user-forms">
<%= form_tag("/contests/#{@contest.id}", remote: true, class: "invite-user", controller: "contestants", action: "create", method: "post") do %>
<%= text_field_tag(:emailVal) %>
<%= submit_tag("Send invitation") %>
<%= button_tag("Remove") %>
<% end %>
</div>
そしてここでは、私のJavaScriptの期待のための私の概要である... application.jsは:
$(document).ready(function(){
$("#add-new-form").click(function(){
$(".invite-user-forms").append("form_tag??");
});
});
さらに、私は「削除」button_tag
をクリックしてform_tagを削除したい...私はそれぞれの新しいフォームはしかし、これが機能するためにはユニークなIDが必要になると想定します。 ..おそらく私のJavaScriptはこのように見えますか?
$(document).ready(function(){
$("#remove-button-(some unique value)").click(function(){
$("#unique-form-value").remove();
});
});
ご迷惑をおかけして申し訳ありません。正しい方向にあなたを指すように
「動的に」JSとはどういう意味ですか?新しいフォームが作成されるたびに、そのフォームのレコードもDBに存在しますか?またはモーダルポップアップでフォームを表示するか?本当の動力学が必要な場合は、レールが提供するRESTfulなAPIを利用し、has_many関係でフォームのモデルを作成する必要があります。 – Crashtor
こんにちはCrashtor ... DBに関しては、私はすでに "コンテスト"と "コンテスト"の間に "has_many"関係を作成しました。したがって、このフォームは基本的に新しいコンテストを作成するためのものです。ただし、フォームが送信する電子メールの値が、「ユーザー」テーブル内の電子メールアドレスと一致するかどうかによって、「参加者」テーブルまたは「招待」ステージングテーブルに移動するため、少し複雑です。どのテーブルに行くべきかを決定するロジックは、コントローラ内で処理される。 – BYates
さて、わかりました - フォームを追加したり削除したりするには、Ajaxを利用する必要があります。 – Crashtor