2012-01-01 9 views
3

私は自分のギャラリー内に新しい画像レコードを作成しようとしています。ユーザーは1つのベンダーを作成でき、多くのギャラリーを作成できます。各ギャラリーには多くの写真があります。この問題は、画像の新しいビューから新しい画像を作成しようとするときに、新しいアクション中に発生します。そうすることで、私のコントローラメソッドがある...Has_many関連が見られませんか? activerecord relation error

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

しかし、これはActiveRecordの関係のための未定義のメソッドエラー「画像」を返します。

クライアントでNoMethodError :: ActiveRecordのためのPicturesController#新しい 未定義のメソッド `写真::関係...

はFYI Picture.newが正常に動作します= @pictureを経由して、完全に関連性をバイパスしますが、私は、適切な範囲(うまくいけばそれは正しい言葉です)ギャラリー/ベンダー&ユーザーアカウントをしようとしています。私を混乱させる何

は関連が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

関連する問題