2013-12-10 5 views
0

이 질문은 이전 질문 (Return url from paperclip to json)의 결과로 나타납니다. 나는 이것을 따르기 쉽도록 그리고 위에서 언급 한 것의 일부이기 때문에 그것을 요약하고 있습니다. 여러 이미지를 업로드하는 클립 클립을 사용하는 CMS 시스템이 있습니다. 내 코드연관 모델의 인스턴스 메소드 호출

def overall_photos 
    @places = Place.all 
    render :json => @places.to_json(:methods => [:avatar_url]) 
    end 

오류 I

has_many :assets 
    accepts_nested_attributes_for :assets, :allow_destroy => true 

def avatar_url 
asset_url 
end 

places_controller

asset.rb

attr_accessible :asset_content_type, :asset_file_name, :asset_file_size, :asset_updated_at, :place_id, :asset 
    belongs_to :place 
    has_attached_file :asset 

    validates_attachment :asset, :presence => true, 
    :content_type => { :content_type => ['image/jpeg', 'image/png'] }, 
    :size => { :in => 0..1.megabytes } 

def asset_url 
asset.url(:original) 
end 

place.rb입니다 내가 접근하려고하면 ... places/overall_photos.json은 { "상태": "500", "오류": "정의되지 않은 지역 변수 또는 # \ u003CPlace의 경우 asset_url"} 0x007f163b67d8a8 \ u003E "}로 표시됩니다. tat 관련 모델 place.rb를 통해 asset.rb의 인스턴스 메서드에 액세스 할 수 없습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까? 나는 심지어 asset_url을 클래스 메소드로 만들려고 시도했지만 여전히 운이 없다. 이것은 당신이 모든 자산 URL을 원하는 경우 귀하의 코멘트

+0

자산에 has_many 자산이 있다고 가정 할 때, 주어진 장소에 대해 'asset_url'이 반환해야하는 대상은 무엇입니까? –

+0

특정 클래스 (예 : 자산)에 대한 인스턴스 메소드를 호출하려면 해당 클래스의 인스턴스가 필요합니다. – Slicedpan

+0

가급적이면 모든 asset_urls가 반환되기를 바랍니다. – user3077352

답변

0
def avatar_url 
    assets.map(&:asset_url) 
end 

:

def asset_urls 
    self.assets.map {|a| a.asset_url } 
end 

그러나 당신은 아마 아바타로 하나 싶어, 내가 좋겠

def avatar_url 
    self.assets.first.asset_url if self.assets.first #to avoid calling asset_url on Nil 
end 
+0

고맙습니다. 그것은 효과가 있었다. – user3077352

+0

대답으로 표시하는 것을 잊지 마십시오. – Slicedpan

+0

어떻게해야합니까? – user3077352

0

에 따라 원하는 걸주지해야

관련 문제