これは実際に作成するのは非常に簡単でした。This questionとthis oneは、AJAXとjqueryをよりよく理解するのに役立ちました。
例として親を使用しましょう。
アクションformat.js
のためにコントローラーに入れました:new
ParentsController
def new
@parent = Parent.new
respond_to do |format|
format.js
end
end
個人的な選択としてmy を削除し、 myによって呼び出されるものにparents/new.html.erb
置き換えます。new.js.erb
"Parent" link_to
# parents/new.js.erb
$("#generate-form").html("<%= escape_javascript(render(:partial => 'parents/form', locals: { parent: @parent })) %>");
remote => true
次に、AJAX 用のパーシャルで親フォームを作成します。
# parents/_form.html.erb
<%= form_for(@parent, :remote => true) do |f| %>
<%= f.input :full_name %>
<%= f.button :submit, 'Done' %>
<% end %>
次に、両方のフォームを保持する 1 つのページがあります。
PagesController
def index
respond_to do |format|
format.html
end
end
次に、そのページの親と子の両方のリンク。
#pages/index.html.erb
<li><%= link_to "Parent", new_parent_path, :remote => true %></li>
<li><%= link_to "Child", new_child_path, :remote => true %></li>
<div id="generate-form">
</div>
remote => true
私のリンクとフォームの は、私のアクションの形式に対応し、ボスとしての私のjs
行為は、いずれかのフォームの一部をその中に配置します。これにより、クリックしたリンクに応じて自動的に一方が他方に置き換えられるため、フォームが動的に変更されます。new
div id="generate-form"
注: 子モデルのコードは同じです (フォーム フィールドを除く)。モデル名を置き換えるだけです (親から子へ)。