在我的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>
赞赏任何意见。
答案 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不会调用另一个控制器。