Ajax在页面上添加和更新内容

时间:2012-05-10 18:20:59

标签: ruby-on-rails ajax ruby-on-rails-3 jquery

在我的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

在控制台中。

1 个答案:

答案 0 :(得分:0)

尝试按照create.js.erb进行操作:

$('#<%= @resume.id %>').replaceWith("<%= escape_javascript render(:file => 'shared/resume_item.html.erb') %>");

或者您也可以使用jquery .appendTo method代替replaceWith,但在这种情况下,我认为replaceWith效果更好。