2010-07-09 44 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

相关问题