我有一个搜索工作我的应用程序,但它只适用于我点击下一页的第一页我得到以下错误:
我的车辆控制器中有以下代码:
def search
vehicles = Vehicle.fuzzy_search(params[:search_string])
@vehicles = Kaminari.paginate_array(vehicles.order:make).page(params[:page]).per(3)
if @vehicles.empty?
flash.now[:alert] = "No records found - displaying all records ..."
@vehicles = Vehicle.order(:make).page(params[:page]).per(3)
end
render :action => "index"
end
我的vehicle.rb中有以下代码
def self.fuzzy_search(search_string)
search_string = "%" + search_string + "%"
self.where("make LIKE ?", search_string)
end
和我的routes.rb有以下内容:
get 'vehicles/search', to: 'vehicles#search'
post 'vehicles/search', to: 'vehicles#search'
由于某种原因,它试图显示一个名为“搜索”的记录,而不是显示第二页。我花了好几个小时试图找出为什么这样做可以请有人帮忙!
答案 0 :(得分:3)
确切问题:
如果您看到错误,则指向 VehicleController#show
这种情况正在发生,因为get 'vehicles/search'
将显示操作但不显示search
显示会像,
get '/vehicles/:id', to: 'vehicles#show'
,所以搜索它作为Id并且给你错误。
<强>解决方案:强>
移动
get 'vehicles/search', to: 'vehicles#search'
高于resources: vehicles
您的搜索路线应位于车辆展示路线的顶部
所以,你的路线应该是这样的,
routes.rb摘录:
get 'vehicles/search', to: 'vehicles#search'
post 'vehicles/search', to: 'vehicles#search'
resources: vehicles
答案 1 :(得分:0)
问题可能出现在下一个按钮上,您可以在其中发送您的搜索所在的表单,并将ID发送为&#34;搜索&#34;。
如果您可以使用搜索表单和下一个按钮html代码进行编辑,那将会很棒。
(没有足够的回复评论你的问题,如果我可以为你提供一个实际答案,我会添加这个答案)
答案 2 :(得分:0)
请在routes.rb文件中添加
get 'vehicles/search', to: 'vehicles#search'
post 'vehicles/search', to: 'vehicles#search'
resources: vehicles
答案 3 :(得分:-1)
在config/routes.rb
文件中:
将以下行移至文件底部。
get 'vehicles/search', to: 'vehicles#search'
post 'vehicles/search', to: 'vehicles#search'
答案 4 :(得分:-1)
如果您正在搜索单个记录 -
Vehicle.find_by_id(params[:id])
如果您要查找多个记录,请使用 -
Vehicle.where(id: params[:id])
而不是 -
Vehicle.find(params[:id])
如果您搜索的ID不存在且不会抛出,则返回Nil - 记录未找到错误