我有一个表单通过ajax成功提交数据,但我无法弄清楚如何在ajax操作后触发事件。我想在提交新记录后重新加载包含表单的部分内容。
查看
#container
#partial
<%= form_for [@qa, @newpdd], :remote => true do |f| %>
....
<%= f.submit "add %>
PDD控制器
def create
@pdd = Pdd.create!(params[:pdd])
@pdd.qa_id = params[:qa_id]
@qa = Qa.find(params[:qa_id])
respond_to do |format|
if @pdd.save
format.html { redirect_to(@qa, :notice => 'Pdd was successfully created.') }
format.xml { render :xml => @pdd, :status => :created, :location => @pdd }
format.js
# render :partial => pddsection
else
format.html { render :action => "new" }
format.xml { render :xml => @pdd.errors, :status => :unprocessable_entity }
end
end
end
create.js.erb
$('#partial').replaceWith("<%= escape_javascript(render :partial => 'pdds/partial') %>");
有什么想法吗?
答案 0 :(得分:0)
我使用<%=j %>
标记而不是<%= escape_javascript() %>
,但它们可能在功能上相似。
您的代码看起来不错。 :remote => true
应该使您的浏览器执行服务器返回的任何javascript(在本例中为create.js.erb)。作为故障排除步骤,打开浏览器的开发人员控制台,查看从ajax表单提交中获得的响应。是正确的视图渲染? ERB呈现的javascript是否正确?
如果看起来不错,请将其复制并粘贴到javascript控制台中。如果这不更新页面,请弄清楚它有什么问题。可能是错误的选择器或语法错误。
答案 1 :(得分:0)