在我的rails 3 app中实现Ajax请求一直是我做过的最令人沮丧的事情之一。在浪费了几天试图按照人们的在线指示,似乎唯一对我有用的是ajax删除。
我网站的用户有一个个人资料页面,其中包含顶部的一些信息,然后他们有几个不同的简历,每个简历都包含在页面的标签中。在每个简历中都有教育,这是我希望能够动态添加和更新的。也就是说,用户has_many恢复,每个简历都有很多教育。我将每个简历呈现在一个id等于它的id的div中。这是我希望在表单提交时使用ajax重新加载的div。这是一个小代码。
用户/显示:
...
<%= render partial: 'shared/resume' %>
...
共享/恢复:
<% if @resumes.any? %>
<div class="tab-content" id="tabResumes">
<%= render partial: 'shared/resume_item', collection: @resumes %>
</div>
<%= will_paginate @resumes %>
<% end %>
共享/ resume_item:
<div class="tab-pane" id="<%= resume_item.id %>">
...
# here I render a few different partials which display the different elements of the resume, such as educations.
# I'd like to reload this area on form submission.
...
</div>
educations_controller:
def create
@resume = Resume.find(params[:resume_id])
@education = @resume.educations.build(params[:education])
respond_to do |format|
if @education.save
format.html { redirect_to(@student, :notice => 'Education created.') }
format.js
else
format.html {render :action => "new" }
format.js
end
end
end
视图/的教育/ create.js.erb
$('#<%=@resume.id%>').html("<%= escape_javascript()%>"); //not sure what to call here, nothing I've tried has given me any success.
我也想让更新刷新同一个div,但我想让create先工作。有人对如何使这项工作有任何建议吗? ajax提交似乎正在经历,因为我正在
Rendered educations/create.js.erb
Completed 200 OK in 52ms
在控制台中。
答案 0 :(得分:0)
尝试按照create.js.erb
进行操作:
$('#<%= @resume.id %>').replaceWith("<%= escape_javascript render(:file => 'shared/resume_item.html.erb') %>");
或者您也可以使用jquery .appendTo method代替replaceWith,但在这种情况下,我认为replaceWith
效果更好。