2012-06-12 37 views
1

信息给出下面的代码:只有得到增量为Rails循环

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个等等。

回答

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 %>; 

无码你的看法,而不是什么是绝对必要:)

+0

这很好。非常感谢。如果我想抓取下一个10并将其添加到var照片,那么如何通过单击按钮来实现这一点? – webbydevy

+0

你将不得不做一个ajax调用,你也必须使用像will_paginate或kaminari这样的gem分析这些结果。 –

+0

该死的,好的。 json实际上被jcarousel使用,所以不能真正使用will_paginate。我希望通过在下一个按钮单击事件上执行AJAX调用来绕过will_paginate。有任何想法吗?非常感谢您的帮助。我一直在看这个太久了。 – webbydevy

0

如果你只想要10分的结果,你可以简单地使用限制方法:

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

如果你需要把所有的照片,但他们一块到的10个街区,你会使用jQuery你可以这样code我创建了一个将each_slice函数添加到核心jQuery对象的功能。在这种情况下它可能很有用。

+0

得到未定义的方法'限制'。也如何追加照片与点击一个按钮?另外,我正在使用Rails 2.3.8。 – webbydevy

+0

'current_app_user.photos'是什么类型的对象?如果它是一个数组,那么你应该***提供'limit'方法。 –