2010-07-09 28 views
0

您好再次計算器的淵博知識的主人, 再次小徒弟編碼器是tabaluga需要幫助的如何在視圖中使用searchlogic命令關聯的對象?

目標:使用戶名在視圖中排序。難點在於,我在控制器中查詢配置文件(Profile.username不存在,但Profile.user.username確實存在)。我如何做到這一點?到目前爲止我的代碼

型號代碼

Class User < Activerecord::Base 
    attr_accessible :username 
    has_one :profile 
end 

Class Profile < Activerecord::Base 
    belongs_to :user 
end 

控制器代碼

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

視圖代碼

<%= order @search, :by => :user_username %> 

沒關係,視圖代碼不起作用(顯然)我怎麼能傳遞視圖代碼中的關聯對象並將其轉換爲符號?

在此先感謝:)

p.s.編輯我只是想通了,這個代碼實際工作,很抱歉打擾:)

回答

1

你可以在你的Profile模型,該模型送入搜索前由用戶排序型材嘗試創建一個named_scope。喜歡的東西:

named_scope :sorted_by_user, { :include => :user, :conditions => ["ORDER BY user.username"] } 

然後

@search = Profile.sorted_by_user.search(params[:search]) 
+0

感謝BJG,這種方法的問題是,你不能使用順序的方法,在視圖中,因爲訂單是在named_scope硬編碼。 – tabaluga 2010-07-09 13:36:57

+0

@tabaluga好的,我明白你想要做什麼。 ':by'選項只是創建'search'方法處理的一些額外的GET參數。你預先解析你的控制器中的'params',然後根據需要調用適當的'search'變體,帶或不帶指定範圍。 – bjg 2010-07-09 15:05:15

+0

太棒了!一切正常! :) – tabaluga 2010-07-09 15:26:22

相關問題