首页 > 解决方案 > 如何在使用 AJAX 部分时自动加载第一个 ActiveRecord 对象

问题描述

我有一个列表@products出现在index.html.erb. 如果您单击任何一个特定产品,而不是转到show.html.erb页面,它会发出 AJAX 请求并按_show.html.erb预期将部分加载到index.html.erb页面上。

有没有一种方法可以自动将第一个产品加载到index.html.erb页面,而无需使用 AJAX 请求单击特定产品?

现在,index.html.erb页面在我呈现部分的区域中是空白的,直到我单击产品,然后它按预期呈现。我正在寻找index.html.erb页面的初始加载来加载第一个产品。

标签: javascriptruby-on-railsajax

解决方案


要回答您的问题,我有两种方法。

方法 1:document.ready发送 AJAX 调用以显示第一个产品。这样它就不会是显式点击,调用就像延迟加载调用一样。

方法 2:只需修改您的索引代码并在您期望的区域中为第一个产品呈现部分内容,_show.html.erb 如下所示:

<%= render :partial => "show", :locals => { :product => @products.first }%>
# PRODUCT TABLE
<%- @products.each do |product| %>
  <% PRODUCT ROWS %>
<% end %>

注意:渲染部分语法可能会有所不同。


推荐阅读