Rails Ajax Javascript渲染部分与集合显示什么

时间:2014-06-24 15:45:19

标签: javascript ajax ruby-on-rails-4 renderpartial

在我的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文件enroll.js.erb设为:

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

成功进行了ajax调用,但渲染没有返回任何内容,因此使我的表的id为#avail-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>

赞赏任何意见。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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