【问题标题】:Rails Ajax Javascript render partial with collection shows nothingRails Ajax Javascript 渲染部分与集合显示什么
【发布时间】:2014-06-24 15:45:19
【问题描述】:

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

感谢任何输入。

【问题讨论】:

  • 如果我没记错,那么您错过了拼写 _avail_courses.html.erb 但您正在渲染 avail_course
  • 拼错了。但是我的代码中的文件名是正确的。感谢您指出这一点。

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


【解决方案1】:

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

【讨论】:

  • 当我输入这个问题时,这是一个错字。现在一切都解决了。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-10-22
    • 2013-10-08
    • 2013-09-08
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2014-12-22
    • 2015-04-30
    相关资源
    最近更新 更多