Rails Ajax Javascript渲染部分与集合没有显示任何内容

Rails Ajax Javascript render partial with collection shows nothing

本文关键字:显示 任何内 集合 Javascript Ajax 染部 Rails      更新时间:2023-09-26

在我的index.html.erb文件中我有:

<table>
  <thead>
    <tr>
      <th>Title</th>
      <th>Note</th>
      <th colspan="2"></th>
    </tr>
  </thead>
  <tbody id="avail-courses">
    <%= render partial: 'avail_course', collection: @courses %>
  </tbody>
</table>

它基本上呈现了一个部分_avail_course.html.erb。

我试图通过ajax调用使此渲染,所以我使我的javascript文件enrollment .js.erb为:

$('#avail-courses').html("<%= escape_javascript render partial: 'avail_course', collection: @courses %>");

ajax调用成功,但是渲染没有返回任何东西,因此使id为# available -courses的表为空。

我在这里错过了什么?我怀疑,在js文件中,我不能直接传递一个集合。

为完整起见,我的部分_avail_course.html。erb是:

<tr>
  <td><%= avail_course.title %></td>
  <td><%= avail_course.note %></td>
  <td><%= link_to 'Info', 'course_list/info/' + avail_course.id.to_s %></td>
  <td><%= button_to 'Enroll', 'course_list/enroll/' + avail_course.id.to_s, method: :put, remote: true %></td>
</tr>

请检查您的部分名称<%= render partial: 'avail_course', collection: @courses %>,但您的上面写的是Which basically render a partial _avail_courses.html.erb.。所以再检查一下你的拼写

我发现了这个问题。这是因为@courses没有在控制器中定义。在正常的format.html响应中,redirect_to负责处理@courses,但我忘记了format.js不会调用另一个控制器。