找不到带有'id'=搜索的车辆

时间:2018-04-05 00:53:47

标签: ruby-on-rails ruby

我有一个搜索工作我的应用程序,但它只适用于我点击下一页的第一页我得到以下错误:

enter image description here

我的车辆控制器中有以下代码:

 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'

由于某种原因,它试图显示一个名为“搜索”的记录,而不是显示第二页。我花了好几个小时试图找出为什么这样做可以请有人帮忙!

编辑 - 完整追踪 enter image description here enter image description here

5 个答案:

答案 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 - 记录未找到错误