2012-12-07 83 views
0

我有一個任務列出學生的細節。我想根據名字和城市進行搜索。如果cityId==0 and name='',那麼我想列出我的所有學生的詳細信息。我怎樣才能做到這一點?我以錯誤的方式做到了這一點。控制器是:如果紅寶石上的語句

if(Student.where(params[:cityId])==0) 
    studentcount = Student.count() 
    @students = Student.limit(params[:jtPageSize]).offset(params[:jtStartIndex]).order(params[:jtSorting]) 
    @jtable = {'Result' => 'OK','Records' => @students.map(&:attributes), :TotalRecordCount => studentcount} 
    else 
    studentcount = Student.where("name LIKE ? AND city = ?", "%#{params[:name]}%", params[:cityId]).count() 
    @students = Student.where("name LIKE ? AND city = ?", "%#{params[:name]}%", params[:cityId]).limit(params[:jtPageSize]).offset(params[:jtStartIndex]).order(params[:jtSorting]) 
    @jtable = {'Result' => 'OK','Records' => @students.map(&:attributes), :TotalRecordCount => studentcount} 
+1

需要注意的是,如果您使用的是Rails,則約定將命名爲「city_id」而不是「cityID」。駱駝案例幾乎只用於類名稱。 – tadman

+0

控制器的代碼太多,除了單行數據檢索器和respond_to之外,移動到模型的所有內容。 – tokland

回答

1

你的情況應該是這樣的:你有

if(Student.where(:cityId => params[:cityId]).count == 0) 

if語句測試一個ActiveRecord::Relation和平等的整數永遠不會爲真

+0

出現這樣的錯誤,意外 ':' – Niths

+0

你正在使用紅寶石1.8正確,那麼你必須使用舊的hashrocket語法 - ':cityId => params [:cityId]' – krichard

+0

你可以安全地刪除那些parens。是的,他們是在問題中,但他們絕對是單一的。 – tokland

0
if User.where(city_id: params[:cityId]).empty?