假设我有一个@dog集合,我希望在一个位置呈现集合的一部分,而在另一个位置呈现其余部分。很容易把它们一起吐出来:
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谢谢。
发布于 2009-12-02 23:34:31
集合参数只接受一个列表。这没有理由不起作用:
render :partial => 'dogs/summary', :as => :dog,
:collection => @dogs.select{|dog| dog.gender == "M"}就我个人而言,我更喜欢在控制器中创建这些列表。我认为看起来更好,并且可以通过命名作用域使其更加干燥。
即:
模型
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_dogshttps://stackoverflow.com/questions/1833659
复制相似问题