假设我有一个@dogs集合,我想在一个地方渲染部分集合,其余部分在另一个地方渲染。将它们全部吐出很容易:
render :partial => 'dogs/summary', :collection => @dogs, :as => :dog
但是可以在线操作(精炼)您的集合,或者更好的做法是在控制器中进行这些定义并执行以下操作:
%h2 Male Dogs:
render :partial => 'dogs/summary', :collection => @male_dogs, :as => :dog
%h2 Female Dogs:
render :partial => 'dogs/summary', :collection => @female_dogs, :as => :dog
感谢。
答案 0 :(得分:4)
集合参数只需一个列表。这没有理由不起作用:
render :partial => 'dogs/summary', :as => :dog,
:collection => @dogs.select{|dog| dog.gender == "M"}
我个人更喜欢在控制器中创建这些列表。我认为看起来更好,并且可以使用命名范围更加干燥。
IE:
<强>模型强>
class dog < ActiveRecord::Base
named_scope :male, :conditions => {:gender => "M"}
named_scope :female, :conditions => {:gender => "F"}
...
end
<强>控制器强>
class DogsController < ApplicationController
...
def index
if params[:user_id]
@user = User.find(params[:user_id])
@male_dogs = @user.dogs.male
@female_dogs = @user.dogs.female
else
@male_dogs = Dog.male
@female_dogs = Dog.female
end
end
end
查看强>
%h2 Male Dogs
= render :partial => 'dogs/summary', :as => :dog,
:collection => @male_dogs
%h2 Female Dogs
= render :partial => 'dogs/summary', :as => :dog,
:collection => @female_dogs