2012-01-01 2 views
3

내 갤러리에 새 그림 레코드를 만들려고합니다. 사용자는 하나의 공급 업체를 만들 수 있으며 많은 갤러리를 만들 수 있습니다. 각 갤러리는 많은 그림을 가질 수 있습니다. 그림의 새보기를 통해 새 그림을 만들려고 할 때 새 작업 중에 문제가 발생합니다. 이 과정에서 내 컨트롤러 방법은 Has_many 연관이 보이지 않습니까? activerecord 관계 오류

def new 
    @picture = current_account.vendor.galleries.pictures.new 
end 

그러나, 이것은 액티브 관계에 대한 정의되지 않은 메서드 오류 '사진'을 반환 ...입니다.

은 참고로 완전히 @picture를 통해 연결을 우회 액티브 :: 관계에 대한 클라이언트의

NoMethodError :: PicturesController은 # 새로운 정의되지 않은 메서드 '사진'... = Picture.new는 잘 작동하지만 나는 갤러리/공급 업체 & 사용자 계정을 적절하게 범위를 좁히려 고 노력하고 있습니다. 나를 혼란 무엇

협회가 accepts_nestred_attributes_for fields_for &를 통해 갤러리 새/편집 양식을 통해 직접 작동하는 것 같다 (@gallery = current_account.vendor.galleries.new이 갤러리 새로운 방법입니다)하지만, 전용 사진 만들기 분리한다는 것입니다 이전 텍스트 당 갤러리 편집/새 양식 오류

하드 코딩 된 갤러리 ID를 @picture = current_account.vendor.galleries (: id => 4) .pictures.new로 바로 옮겨 보려고했지만 필사적 인 추측과 마찬가지로 사진이 깨졌습니다.

나는 여기서 뭔가 명백한 것이 빠져있는 것 같아. 이견있는 사람?

감사합니다.

냈다 모델은 ...

class Gallery < ActiveRecord::Base 
    belongs_to :vendor 
    has_many :pictures 

    class Picture < ActiveRecord::Base 
     belongs_to :vendor 
     belongs_to :gallery 

(나는 그림의 테이블이 gallery_id 가지고 있다는 것을 확인했습니다 정수 열) ...

냈다 루트 (냈다 클라이언트 네임 스페이스를)

자원 : 공급 업체가 할

resources :galleries do 
    resources :pictures 
end 

답변

1

Vendor has_many :galleries 경우에서 사진을 만들 수있는 갤러리 지정해야합니다

@picture = current_account.vendor.galleries.first.pictures.build 

또는 특정 갤러리를 선택합니다 뭔가.

[편집]

@picture = current_account.vendor.galleries(:id => 4).pictures.new 

이 될 것

의 올바른 양식

@picture = current_account.vendor.galleries.find { |g| g.id == 4 }.pictures.build 

(galleries는 관계이기 때문에) 당신은 또한 당신의 도움, 브랜든에 대한

@picture = current_account.vendor.galleries.where(:id => 4).pictures.new 
+0

감사를 시도 할 수 있습니다 ! 상황이 예상대로 진행되고 있습니다. 당신의 모범은 큰 도움이되었습니다. 마지막 예제는 처음에는 같은 관계 오류를 반환했지만, 첫 번째 예제의 그림 앞에 'first'를 붙이면 작업이 실행 중입니다. 나는 게으른 로딩을 더 읽을 필요가 있다고 생각한다. [: stackexchange가 투표를하기 전에 필요한 최소한의 평판 포인트를 여전히 밑도는 상태지만, 일단 최저치에 도달하면 되돌아 가서 그렇게 할 것입니다. – StrandedPanda

관련 문제