0

可能是一个愚蠢的问题,所以我提前为此道歉:

我有一个Item Controller我用来显示所有的索引操作items(duh)。现在,我想过滤显示的项目(这里,只是标题中有“鞋子”的项目)。

不幸的是,我无法在 index 操作下定义 @item = Item.find(params[:id]) 语句。

我在 ItemsController#index 中得到可怕的 ActiveRecord::RecordNotFound ----找不到没有 ID 错误的项目。

有任何想法吗?

物品控制器

def index
     @item = Item.find(params[:id])
     @items = Item.where(@item.title =~ /shoes/i).paginate(:page => params[:page], :per_page => 30)

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @items }
    end
  end
4

1 回答 1

5

这实际上是你想要的。你尝试的没有意义。

  def index
     @items = Item.where("title ILIKE '%shoes%'").paginate(:page => params[:page], :per_page => 30)

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @items }
    end
  end

编辑:

为了与所有受支持的数据库兼容,您似乎可以这样做

item=Item.arel_table
Item.where(item[:title].matches('%shoes%'))
于 2012-11-12T02:25:50.210 回答