【问题标题】:Ruby About $("#form > form").replaceWith("<%= escape_javascript(render(:partial => "form"))%>")Ruby 关于 $("#form > form").replaceWith("<%= escape_javascript(render(:partial => "form"))%>")
【发布时间】:2013-01-08 11:46:14
【问题描述】:

**有专家能解释一下为什么在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 %>

【问题讨论】:

    标签: jquery css ruby-on-rails ruby


    【解决方案1】:

    这不需要专家。 $("#form &gt; form") 表示 form 标签,它是带有id=form 的 DOM 的子标签。

    &lt;%= form_for(@entry, :remote =&gt; true) do |f| %&gt; 生成的表单是&lt;div id="form"&gt; 的子表单

    【讨论】:

      【解决方案2】:

      #form 选择器选择具有idform 的元素 - 在本例中为&lt;div&gt; 元素。

      #form &gt; form 选择器选择作为 idform 的元素的直接子元素的表单元素 - 在这种情况下,&lt;form&gt; 元素直接位于 &lt;div id="form"&gt; 元素内。

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

      【讨论】:

        【解决方案3】:

        $("#form") 将匹配&lt;div&gt;id=form 位于index.html.erb 的第2 行

        $("#form &gt; form") 匹配此&lt;div id=form&gt; 中的&lt;form&gt; 标记。当您从 &lt;div&gt; 内部渲染您的部分时,&lt;form&gt; 实际上是您搜索它的位置。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-04
          • 1970-01-01
          • 1970-01-01
          • 2014-04-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多