2012-11-11 6 views
0

집 모델각 루프

class House < ActiveRecord::Base 
    has_many :categories, :through => :category_join_table 

def features_to_html_class 
    "#{price} #{rooms} #{guests} #{{categories.name do |cat| cat.name}}" 
end 
end 

하우스 인덱스 템플릿

- @houses.each do |house| 
    .item{:class => house.features_to_html_class } 

값 가격, 객실은, 손님이 범주 뷰 (필터링 목적)에서 올바르게 구문 분석,하지만하지 않습니다. 내가 뭘 잘못하고있어?

+0

HTTP ([게시물에 서명 또는 태그 라인을 추가하지 마십시오]하십시오 : //stackoverflow.com/faq#signatures) – meagar

답변

2

이 시도 : 당신이 사용할 필요가 있으므로

categories.map{|cat|cat.name|}.join(' ') 
+0

위대한! – Remco

2

공백이 있으면 같은 범주 이름에 대해 여러 클래스를 갖고 싶지 않습니다.

Top Articles 
Articles 

생산할 것인가 :

class="Top Articles Articles" 

당신은 한 단계 더 가서 대시 공백을 대체하고, 모두와 downcase 수 :

"#{ categories.map{ |cat| cat.name.parameterize }" 

class="top-articles articles" 

편집 :

앤서니 지적 코멘트에서 레일스를 사용하고 있다면 parameterize을 사용할 수 있습니다.

+0

또는'String # parameterize'를 사용하여 문자열을 표준화 된 표현으로 변환하십시오 –

0

당신은 각각의 이름 categori을 반복해야합니다

{categories.name.each { |cat| cat.name}} 
+0

categories.name은 반드시 NoMethod 오류를 발생시킵니다. 그리고'each' 메쏘드는 원래의 배열 객체를 리턴 할 것입니다. 대신지도를 사용해야합니다. irb 콘솔에서 직접 해보십시오. – nicooga