这实际上很容易创建。这个问题和这个问题帮助我更好地理解了 AJAX 和 jquery。
让我们以父级为例:
我将其format.js
放入控制器中以执行new
操作:
ParentsController
def new
@parent = Parent.new
respond_to do |format|
format.js
end
end
我删除 myparents/new.html.erb
作为个人选择并将其替换new.js.erb
为将由 my 调用的"Parent" link_to
。
# parents/new.js.erb
$("#generate-form").html("<%= escape_javascript(render(:partial => 'parents/form', locals: { parent: @parent })) %>");
remote => true
然后在用于 AJAX的部分中创建一个 Parent 表单。
# parents/_form.html.erb
<%= form_for(@parent, :remote => true) do |f| %>
<%= f.input :full_name %>
<%= f.button :submit, 'Done' %>
<% end %>
然后我有一页包含两种形式。
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"
作为老板的行为,将任一表单部分放入其中。这会根据您单击的链接自动替换另一个,从而动态更改表单。
注意:子模型的代码是相同的(除了表单字段)。只需替换模型名称(父到子)。