可能是一个愚蠢的问题,所以我提前为此道歉:
我有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
答案 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%'))