2011-06-29 16 views
1

私は以下のクラスがあります。Railsの委任は期待通りに動作しない

class VideoChannel < ActiveRecord::Base 

    #Associations 
    belongs_to :video_playlist, :dependent => :destroy 
    VideoChannel.video_playlist_name 

    delegate :name, :id, :list_type, :list_id, :manual, :to => :video_playlist, :prefix => true 

    #validations 
    validates_presence_of :name 

    #After Functions 
    def after_create 
    video_playlist = VideoPlaylist.new(:name  => self.name, 
             :list_type => "VideoChannel", 
             :list_id => self.id) 
    video_playlist.save 
    end 

そして:

class VideoPlaylist < ActiveRecord::Base 
    belongs_to :list, :polymorphic => true 

    has_many :video_channels, :dependent => :destroy 
    delegate :name, :id, :description, :to => :video_channel, :prefix => true 

end 

私はVideoChannelページのリンクを作成するために、Railsの委任機能を使用しようとしているが、その私はビデオプレイリストにリンクしてそこのコンテンツを編集することができます。そのため、関連付けはあります。現在、プレイリストセクションを通ってプレイリストを編集できますが、それらを結合したいと考えています。私はこれを理解できないようです。イムもRailsのに非常に新しい、まだガイドを通じて作業など

編集:

class VideoChannelsController < ApplicationController 
    # GET /videochannels 
    # GET /videochannels.xml 
    def index 

    @video_channels = VideoChannel.roots(:order => 'order_num') 
    @video_channels_parents = @video_channels.group_by {:parent_id} 
    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @video_channels } 
    end 

    end 

    # GET /videochannels/1 
    # GET /videochannels/1.xml 
    def show 
    @video_channel = VideoChannel.find(params[:id], :order => 'order_num') 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @video_channel } 
    end 
    end 

エンド:ここではここでビューのコードだ

<%= link_to '<span class="pen icon"></span>Edit', 
     content_url(:controller =>"video_playlists", :id => channel.video_playlist_id, :action => "edit"), 
     :class => "button right" %> 

コントローラのTEH関連する部分はあります

class VideoPlaylistsController < ApplicationController 
    # GET /video_playlists 
    # GET /video_playlists.xml 
    def index 
    if !params[:with].nil? 
     @video_playlists = VideoPlaylist.find(:all, :conditions => {:list_type => 'VideoShow'}) 
    else 
     @video_playlists = VideoPlaylist.find(:all, :conditions => {:list_type => 'Section'}) 
    end 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @video_playlists } 
    end 
    end 

    # GET /video_playlists/1 
    # GET /video_playlists/1.xml 
    def show 
    @video_playlist = VideoPlaylist.find(params[:id], :include => [{:video_video_playlists => :video}, {:videos => :asset}, {:videos => :content_image}]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @video_playlist } 
    end 
    end 
end 
+0

あなたはビューとコントローラコードの内容を投稿できますか? – klochner

答えて

0

VideoChannel.video_playlist_name 

から来ていますか?それは何ですか?また、インスタンスではなくクラス上のメソッドを呼び出すこともあります(Rubyはこれにあまりよく似ていませんが、説明するだけで十分です)。とにかく

委任は、次のように列車事故のコードの多くを回避するために実際にある:

fred.jim.bill.xxx 

あなたは、彼らがお互いに属していることを言った - 彼らは間違っているような関係が見えますワンウェイ。なぜあなたは子供の中から親を作りますか?あなたは、どのように多くのビデオチャンネルを特定のプレイリストに所属させるつもりですか?

私はあなたがビルドと関係の名前を見る必要があると思います。

class Product < ActiveRecord::Base 
    has_many :stock_items 
end 

class StockItem < ActiveRecord::Base 
    belongs_to :product 
end 

これはstock_itemが列PRODUCT_IDを持っていることを意味します:多分あなたのモデルを誤解し、私を過ぎGATするには、多くの在庫のアイテムを持っている製品にスイッチを持っていることができます。これは自動的にidを設定し、IDを設定する必要がないことを意味し

product.stock_items.build # :whatever the params are required 

だから、あなたはあなたのような何かをしたい製品を作成していると言います。それでは、product.saveを実行すると、関連するすべての在庫アイテムも保存されます。

この玩具モデルのビューでは、ストックアイテムの1つを表示していた場合は、デリゲートを使用して、このビューの製品の名前をstock_item.product.name (例えば)。

こちらがお役に立てば幸いです。

+0

私はそれが伝えられた関係を設定しませんでした。プレイリストは技術的には親ですが、ビデオチャンネルとセクションとの多様な関係を持っています(ここには含まれていません)。したがって、プレイリストは一般にVideoChannelまたはVideoShow(セクションにリンクする)のいずれかになります。私はそれが少し複雑だと思ったが、私はここで新しい。実際に作業していたアソシエーションを切り替えると、クエリが通り過ぎましたが、別の名前の代わりにvideo_channel_idが渡されました。これを修正する方法がわかりません。変数は正しいものでした。 – Micharch54

+0

私はあなたにもっと役立つデータベースを見なければならないでしょう。しかし、私は常に多型を注意して使用します。通常、面倒なことはありません。それはちょうど私の意見です。:) – Ghoti

+0

これは私のところでほとんどの方法を得ました、私はもう一人の経験豊富なレールプログラマーがこれを終わらせるようにしました。ご協力いただきありがとうございます。正直なところ、私は多相関係の使用を理解していません。複雑な鍵は痛みです。何らかの理由でほとんどすべてのテーブルでそれらを使用しています。 – Micharch54