2013-08-16 23 views
0

如何调用查询结果的方法,在Rails的 我有以下在我的项目控制器代码如何调用查询结果的方法,在Rails的

高清inprogress_report @projects = Project.all

@project_list = Project.find_by_sql(“select p.id,p.name,(select sum(i.estimated_hours)from i where i.project_id = p.id)as estimated_hours,(select sum(t.hours)from time_entries t where p .id = t.project_id)作为Spent_Hours,(从用户u中选择u.firstname,其中u.id IN(从成员m中选择user_id,其中m.project_id = p.id和m.id IN(从member_roles选择member_id,其中role_id IN (从角色r中选择id r.na me)')'))))1)作为协调者,(从u中选择u.firstname u.id IN(从成员m中选择user_id,其中m.project_id = p.id和m.id IN(select member_id from member_roles where role_id IN(从r中选择id(其中r.name ='Project Manager'))))限制1)作为项目经理从项目p其中p.status IN('16','14','15',' 17' , '18', '19', '20')通过p.id组“)

现在我想就@project_list结果

,所以我已经把

@project_list = @project_list.search(params[:search]) 
serch主页

并在我的project.rb中有

def search(search) 
    if search 
    where('name LIKE ?', "%#{search}%") 
    else 
    find(:all) 
    end 
end 

,但给我的错误未定义的搜索方法...

我可以使用活动记录:: Base.connection.select_all以上的查询和结果,我想进一步排序是可能的PLZ指导我

+0

'search'是未定义'project_list',它只会为你的模型中定义。 'find_by_sql'返回一个'数组'。 –

+0

我可以使用Active Record :: Base.connection.select_all为上述查询和结果我想进一步排序是可能的plz指导我 –

回答

0

马克西米利安 - 盖斯是正确的,但因为它可能需要一段时间来改写find_by_sql方法调用,我会重写search方法调用使用由find_by_sql方法调用返回的数组,如果的大小结果数组是合理的。换句话说,而不是,:

@project_list = @project_list.search(params[:search]) 

放像:

@project_list.keep_if{ |p| /.*#{params[:search]}.*/.match p.name } 
+0

给我undefined keep_if方法错误为零类错误 –

+0

你能提供确切的错误吗?这听起来像@project_list是零。 – keisuke

+0

NoMethodError(undefined method'keep_if'for#): app/controllers/projects_controller.rb:90:在'report' –

相关问题