我想要完成的任务(如果可能的话)是创建一个基本上进行2次搜索并将结果返回到一个实例变量的查询。这是因为,我使用的是will_paginate
gem,它只允许我从单个查询中渲染一个对象数组,并且不接受任何其他要被推送到被发送到的数组的其他内容。模板。
即
我的events_controller.rb
#returns all events that match query
@events_search_result = Events.search(params[:event][:query])
#returns all events where column 'repeats' is nil
@events_not_repeat = Events.where.not(repeats: nil)
@events_not_repeat.each do |event|
#'schedule.occurs_on?' methods coming from different gem. Not relative in the outcome of the array of objects to be rendered.
if event.schedule.occurs_on?(params)
@events_search_result << event
end
end
推送这两个对象数组可以得到所需的结果,但在尝试将@events_search_result
渲染到模板时,我收到错误...
NoMethodError - undefined method 'total_pages' for #<Array:0x00000000>:
哪个来自will_paginate
宝石。
理想情况下,我希望一次性发生这两个问题,我认为这将解决我的问题。我查看了ActiveRecord Query Interface
,但由于我的经验不足,我对查询组合并不熟悉。
任何建议都会有所帮助。已经坚持这个问题很长一段时间了,并尝试了一堆解决方法。如果我的示例不够具有描述性,请提前道歉,但如果需要,我很乐意填写详细信息。谢谢!
答案 0 :(得分:1)
由于您的两个对象具有相同的模型,因此您可以将一个对象添加到其他对象并应用分页。
例如:
NSString *venueID = @"my_lovely_venue_id";
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"swarm://"]]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[@"swarm://checkins/add?venueId=" stringByAppendingString:venueID]]];
}
答案 1 :(得分:0)
您需要在will_paginate初始值设定项文件中will_paginate/array
来解决问题:
require 'will_paginate/array'
答案 2 :(得分:0)
在发送到模板调用的实例变量上...
@combined_events_of_both_queries.paginate(:page => params[:page], :per_page => 5)
将其更改为要迭代的will_paginate
数组。