Ruby on rails 无法在Rails 3.2上使用AJAX表单部分
我正在尝试用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 这是我的分类控制器: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_
# 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条件。