如何在视图中显示重复的帖子?
我希望能够做到这样的事情:
@post = post.find(1,2,1)
返回帖子1,帖子2,然后帖子1(再次)。
意识到这是一个愚蠢的问题,但我找不到任何文件。
答案 0 :(得分:1)
虽然我不确定用例,但您可以执行以下操作:
@posts = Post.find(1,2) << Post.find(1)
你可以在你的Post模型中定义它:
def find_with_array(*args)
posts = []
for arg in args
posts << Post.find(arg)
end
posts
end
显然,由于您正在进行许多SQL调用,因此上述效率很低。如果你想要它有效,那么你可以编写一个代码来进行一次sql调用(但不会返回重复项),然后遍历数组并重新排列(复制重复项),例如(未完全测试):
def find_with_array(*args)
posts_with_no_duplicates = Post.find(args)
posts_with_duplicates = []
for arg in args
for post in posts_with_no_duplicates
if arg == post.id
posts_with_duplicates << post
end
end
end
end
这个应该更好,因为你只调用一次DB(通常是最慢的部分)但是它是O(N ^ 2)如果需要,可能有办法使它成为O(N)。然而,它与之前的选项相比有了很大的改进
答案 1 :(得分:0)
不知道更多细节,这是我建议的。看一下有关复选框数组的帖子:http://www.skuunk.com/2008/05/checkbox-arrays-in-rails.html
每个复选框都会将值放入特定的params键。这将解决获取具有值列表的数组的问题。如果这不能解决您的特定问题,请在评论中告诉我。