0

在我的 rails 3 应用程序中实现 Ajax 请求是我做过的最令人沮丧的事情之一。在浪费了几天尝试在线遵循人们的指示之后,似乎对我有用的唯一方法是 ajax 删除。

我网站的用户有一个个人资料页面,其中包含顶部的一些信息,然后他们有几个不同的简历,每个简历都包含在页面上的一个选项卡中。每份简历中都有教育,这是我希望能够动态添加和更新的内容。即用户有_many简历,每份简历有_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>

教育控制器:

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

在控制台中。

4

1 回答 1

0

试着让你create.js.erb的路线:

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

或者,您也可以使用jquery .appendTo 方法而不是replaceWith,但是,在这种情况下,我认为replaceWith效果更好。

于 2012-05-10T18:28:35.143 回答