2013-05-14 4 views
0

레일즈 3.2를 사용하고 있습니다.배열에서 인스턴스 변수를 작성하는 방법은 무엇입니까?

transports = %w(car bike) 

transports.each do |transport| 
    @transport = transport.classify.all 
end 

그 코드가 작동하지 않습니다,하지만 난 결과가되고 싶어요 : 여기 내 코드는

@cars = Car.all 
@bikes = Bike.all 

내가 어떻게해야합니까? 당신이 전송`에`transport.classify.all`을 변경하면 transports 배열의 항목이 이제 올바른 코드가 원하는 결과를 얻을 단수 점을 감안

답변

5
transports.each do |transport| 
    instance_variable_set("@#{transport}", 
         transport.classify.constantize.all) 
end 

업데이트

transports.each do |transport| 
    instance_variable_set("@#{transport.pluralize}", 
         transport.classify.constantize.all) 
end 
+1

입니다 .classify.constantize.all'이면 답이 올 바릅니다. 'classify'는 클래스 상수를 얻지 못합니다. 또한 이미'복수형 '이기 때문에'transport' 문자열을 복수로 할 필요가 없습니다. –

+0

감사합니다 @BeatRichartz, 나는 여기 저기에 뭔가를 놓쳤습니다 ... – toro2k

+0

많은 많은 감사드립니다. 후속 질문을 게시 할 수 있습니까? http://stackoverflow.com/questions/16555660 – Victor

관련 문제