**任何专家都可以解释为什么在edit.js中使用$(“#form> form”),而不是$(“#form”)??
以下是一些相关代码:**
内部控制器(app / controllers / entries_controller.rb)
def edit
@entry = Entry.find(params[:id])
respond_to do |format|
format.html
format.js
end
end
在app / views / entries / edit.js.erb模板中设置值到表单中,这里是代码:
$("#form > form").replaceWith("<%= escape_javascript(render(:partial => "form"))%>")
索引页面(app / views / entries / index.html.erb)
<h2>Entry form</h2>
<div id="form">
<%= render :partial => "form" %>
</div>
表格部分(app / views / entries / _form.html.erb)
<%= form_for(@entry, :remote => true) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :address %><br />
<%= f.text_area :address, :rows => 3 %>
</div>
<div class="field">
<%= f.label :phone %><br />
<%= f.text_field :phone %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
答案 0 :(得分:0)
这不需要专家。 $("#form > form")
表示form
标记,它是具有id=form
的DOM的子标记。
由<%= form_for(@entry, :remote => true) do |f| %>
生成的表单是<div id="form">
答案 1 :(得分:0)
#form
选择器选择id
form
的元素 - 在本例中为<div>
元素。
#form > form
选择器选择表单元素,该表单元素是id
form
元素的直接子元素 - 在这种情况下,<form>
元素直接位于<div id="form">
内1}}元素。
您想要替换表单本身,而不是包含它的<div>
,因此您要选择<div id="form">
元素内的表单。
答案 2 :(得分:0)
$("#form")
会将<div>
与id=form
第2行的index.html.erb
相匹配
$("#form > form")
匹配此<form>
中的<div id=form>
标记。当您从<div>
内部渲染部分时,<form>
实际上就是您搜索它的位置。