我在 rails 视图中有一个自行车列表,自行车数据库每分钟通过一个 cron-job 更新。
如何使 ajax 调用仅呈现从 cron 作业在数据库中创建的新记录的一部分?
例如:
当前视图是所有自行车: 自行车 A 自行车 B 自行车 C
Cron 工作增加了另一辆自行车:Bike D
我想单击一个链接以进行 ajax 调用以呈现仅将 Bike D 添加到视图的部分
控制器:
def index
@bikes = Bike.order('created_at DESC').limit(50).all
respond_to do |format|
format.js { render :bike_post_ajax }
format.html
end
end
看法:
<%= link_to 'update bikes', bikes_path, :remote=> true %> #link to Ajax call
<table>
<% @bikes.each do |bike| %>
<%= render 'bike_post', :bike => bike %>
<% end %>
</table>
bike_post_ajax.js.erb
$('table').prepend("<%= j(render('bike_post', :bike=> ??)) %>")
_bike_post.html.erb
<tr>
<td>$<%= bike.price %>0</td>
<% if bike.posted != nil %>
<td><%= image_tag bike.posted, :height => '200', :width => '200' %></td>
<% else %>
<td><%= image_tag 'y-u-no-guy.jpg' %></td>
<% end %>
<td><%= link_to bike.title, bike.url, :target => '_blank' %></td>
<td><%= bike.location %></td>
<td><%= bike.created_at.strftime("%b %d, %H:%M") %></td>
</tr>
我想过这样做但不知道如何实现的方法是将最新项目的最后created_at日期存储在最近呈现的数组中,然后选择在控制器中创建一个仅包含新项目的实例变量进行 ajax 调用时将使用部分。此过程还必须更新最后一个 created_at 日期。
不过,我不知道如何实现这样的东西,尤其是如何在运行控制器操作后使 last_created_at 变量持续存在
感谢您提前提供任何帮助