代码适用于localhost,但视图规范失败,我无法弄清楚原因。
在视图中我有:
<%= paginate events %>
在控制器中我有:
expose(:events) { @events }
def method
@cat_ids = event_categories.collect(&:id)
page = params[:page] || 1
per = params[:per] || 4
@events = Event.order(:start).where(event_category_id: [@cat_ids])
.where('start >= ?', Date.today)
.where(workflow_state: 'live')
.page(page).per(per)
end
在视图规范中,我尝试了人们在之前的类似问题上提出的所有不同方法,但没有一种方法有效。我们正在使用FactoryBot。
以下是我尝试过的一些事情:
before do
view_allow some_events
allow(view).to receive(:page).and_return(1)
allow(some_events).to receive(:current_page).and_return(1)
allow(some_events).to receive(:total_pages).and_return(2)
end
我根据上述内容收到的错误消息如下:
Failure/Error: <%= paginate events %>
ActionView::Template::Error:
undefined method `total_pages' for #<Event…
ActionView::Template::Error:
No route matches {:controller=>"events", :page=>nil}
undefined method `current_page' for #<Event
如果您需要查看我的更多代码,请告诉我,因为我对此仍然很陌生。