-2

**任何专家都可以解释为什么在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 %>
4

3 回答 3

0

选择器#form选择带有idof的元素form- 在这种情况下,是一个<div>元素。

选择器#form > form选择作为元素的直接子元素的表单元素id-form在这种情况下,<form>直接位于元素内部的<div id="form">元素。

您想要替换表单本身,而不是<div>包含它的表单,因此您想要选择<div id="form">元素内部的表单。

于 2013-01-24T16:35:05.110 回答
0

$("#form")将与<div>id=form2 行匹配index.html.erb

$("#form > form")匹配<form>this 中的标签<div id=form>。当您从内部渲染您的局部时<div><form>实际上是您搜索它的地方。

于 2013-01-24T16:35:35.867 回答
0

这不需要专家。$("#form > form")表示form带有 的 DOM 的子标签id=form

您生成的表单<%= form_for(@entry, :remote => true) do |f| %><div id="form">

于 2013-01-24T16:34:14.033 回答