루프

2012-10-18 2 views
-1

내가 얻을 수있는 객체 속성과 레일에 루비의 속성을 제외하고 속성과 내가 3 개 속성이있는 경우루프

<% @object.attributes.each do |attr_name| %> 
.... 
<% end %> 

내가 3 개 특성을 얻을.

I하려는 경우에만 nameattr_nameemail

나는이 루프 폐기 또는 field :second_name

당신에게

+0

블랙리스트'(@ object.attributes - [: second_name). 각 {...}'화이트리스트'[: 이름 : 이메일] .each {...}' – Phrogz

답변

2

감사 제외 할 수 있습니다 어떻게 당신은 당신의 루프 내에서 조건을 추가 할 수있는 특성을 얻을 좋아요 :

@object.attributes.each do |attr_name| 
    unless attr_name.eql?('second_name') 
    # Do stuff here 
    end 
end 
+3

필자는 개인적으로'next if attr_name == 'second_name''을 사용합니다.이 함수는 기능적으로는 같지만 나머지 메서드는 들여 쓰지 않아도됩니다. – MrTheWalrus

+0

대단히 고마워요 – hyperrjas

2

특정 속성을 포함하거나 제외시키는 기준이 무엇인지는 명확하지 않습니다. 당신이 블랙리스트를 원하는 경우

는 :

(@object.attributes & [:name, :email, :socks]).each{ ... } 
+0

대단히 고마워요! – hyperrjas

0

블랙리스트 :

exclude = [:a, :b, :c] 
@object.attributes.reject { |k,v| only.include?(k.to_sym) } 

(@object.attributes - [:second_name]).each{ ... } 
# Alternatively: 
@object.attributes.reject{ |n| n==:second_name }.each{ ... } 

 
당신은 허용 목록을 원하는 경우3210

화이트리스트 :

only = [:a, :b, :c] 
@object.attributes.select { |k,v| only.include?(k.to_sym) }