2009-12-02 3 views
0

내가 @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 

감사합니다.

답변

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 
+0

그게 완벽합니다. 정말 고마워! – doctororange

+1

class Dog; def 남성? 성별 == "M"; 종료; (: 남자 &?) : –

+0

@weppos을 : 당신은 dogs.select @를 할 수있는 최근 루비 구현을위한 좋은 재료입니다. \ _scopes가하지 않는 경우에도 작동합니다. – EmFi

관련 문제