Ruby on rails 无法在Rails 3.2上使用AJAX表单部分

Ruby on rails 无法在Rails 3.2上使用AJAX表单部分,ruby-on-rails,ajax,ruby-on-rails-3,forms,Ruby On Rails,Ajax,Ruby On Rails 3,Forms,我正在尝试用AJAX呈现一个表单。非ajax版本可以正常工作,但ajaxified版本不行。指向它的链接位于index.html.erb中。Webrick服务器显示: 2012年11月19日17:19:27-0500开始为127.0.0.1提供GET/categories/3/new_sub 分类控件new_sub作为JS进行处理 参数:{id=>3} 类别加载0.1ms从categories.id=?限制1[[id,3]] 渲染类别/_form.html.erb 1.8ms 渲染类别/new_

我正在尝试用AJAX呈现一个表单。非ajax版本可以正常工作,但ajaxified版本不行。指向它的链接位于index.html.erb中。Webrick服务器显示:

2012年11月19日17:19:27-0500开始为127.0.0.1提供GET/categories/3/new_sub 分类控件new_sub作为JS进行处理 参数:{id=>3} 类别加载0.1ms从categories.id=?限制1[[id,3]] 渲染类别/_form.html.erb 1.8ms 渲染类别/new_sub.js.erb 3.6ms 在8ms视图中完成200 OK:6.3ms |活动记录:0.1ms

这是我的分类控制器:

# GET /categories
# GET /categories.json
def index
  @categories = Category.roots

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @categories }
  end
end

# GET /categories/1/new_sub.html
# GET /categories/1/new_sub.js
def new_sub
  @parent = Category.find(params[:id])
  @category = Category.new

  respond_to do |format|
    format.html
    format.js
  end
end
index.html.erb:

<h1>Listing categories</h1>

<%= recurse_categories(@categories) %>

<br />

<%= link_to 'New Category', new_category_path %>
<%= form_for(category) do |f| %>

  <div class="field">
    <%= f.text_field :name  %>
    <%= f.hidden_field :ancestry, value: "#{parent.ancestry + '/' + parent.id.to_s}" %>
    <%= f.submit "Create subcategory" %>
  </div>

<% end %>
递归类别帮助器:

def recurse_categories(cats)
  s = "<ul>"
  cats.each do |cat|
    s << "<li id=\"#{cat.id}\">#{link_to cat.name, new_sub_category_path(cat), remote: true}</li>"
    if cat.has_children?
      s << recurse_categories(cat.children)
    end
  end
  s << "</ul>"
  s.html_safe
end
新的_sub.js.erb:

$('ul').after(<%= render partial: "form", locals: { parent: @parent, category: @category } %>);
_form.html.erb:

<h1>Listing categories</h1>

<%= recurse_categories(@categories) %>

<br />

<%= link_to 'New Category', new_category_path %>
<%= form_for(category) do |f| %>

  <div class="field">
    <%= f.text_field :name  %>
    <%= f.hidden_field :ancestry, value: "#{parent.ancestry + '/' + parent.id.to_s}" %>
    <%= f.submit "Create subcategory" %>
  </div>

<% end %>

您的ul标签处于类别错误的条件块下。是否确实要将响应附加到错误\u解释div中

您可以拥有一个span标记并在new_sub.js.erb中使用它

<div class="field">

 <span id="subcat"/>     

<%= f.text_field :name  %>
<%= f.hidden_field :ancestry, value: "#{parent.ancestry + '/' + parent.id.to_s}" %>
<%= f.submit "Create subcategory" %>

修好了!我只是忘记了jquery选择器和参数周围的引号,DUH

什么意思它不工作?但是错误解释div甚至不存在,因为没有错误。该ul仅在保存对象时显示是否存在验证错误。我还没有保存任何东西,我甚至无法渲染表单。在这种情况下,ul甚至不存在,因为不满足if条件。