Rails控制器中的索引操作问题

时间:2012-11-12 02:09:14

标签: ruby-on-rails ruby controller

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

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

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

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

有什么想法吗?

项目控制器

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

1 个答案:

答案 0 :(得分: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%'))