仅以Rails循环的增量获取信息

时间:2012-06-12 20:13:34

标签: ruby-on-rails ruby json loops

鉴于以下代码:

var photos = [
<% current_app_user.photos.each do |photo| %>
{ url: "<%= photo.thumbnail_uri(400, 189) %>", title: "<%= truncate(photo.name, 65) %>", path :"<%= photo_path(photo) %>" },
<% end %>
];

如何将其修改为一次只能拍10张照片?

最初,我想生成10,然后点击一个按钮再添加10个,依此类推。

2 个答案:

答案 0 :(得分:1)

您应该在控制器中执行此操作,而不是在您的视图中,但在控制器内部,您应该这样做:

@photos = current_app_user.photos.all(:limit => 10).map do |p| 
  { :url => p.thumbnail_uri(400, 189),
    :title => p.name,
    :path => photo_path(p) }
end

在你看来:

var photos = <%= @photos.to_json %>;

除了严格必要的内容之外,您的视图中没有代码:)

答案 1 :(得分:0)

如果您只想要10个结果,则只需使用限制方法:

current_app_user.photos.limit(10).each { |photo| # etc... }

如果您需要获取所有照片但是将它们分成块10并且您正在使用jQuery,那么我创建的code可以向核心jQuery对象添加each_slice函数。在这种情况下它可能很有用。