2012-05-06 9 views
0

私は足場ジェネレータを使用して作成したモデルをいくつか持っています。レール、フォーム、リレーションの問題

あります

rails g scaffold event title:string content:text 
rails g scaffold link title:string 

私は、各イベントは、多くのリンクがあり、リンクがイベントに属することをしたいと思います。

私がコード化されてきたイベントモデルでそう

has_many :links 

そして、リンクモデル内:

rake db:migrate 

ために:

belongs_to :event 

を私が実行した上での移動データベースを構築する。足場の機能を使って2つのイベントを作りました。

ここでは、イベントの表示>表示内に直接リンクを追加したいと思います。

<%= form_for([@event, @event.links.build]) do |f| %> 

<p><%= f.text_field %></p> 
<p><%= f.submit "Add the link" %></p> 
<% end %> 

をしかし、私はショーのページを訪問しようとすると、ブラウザは言う:

unknown attribute: event_id 
show.html.erbインサイド

私が書いた(ビュー>イベントのディレクトリ内)

これはエラーです:

<%= form_for([@event, @event.links.build]) do |f| %> 

私は間違っていましたか?事前

答えて

1

ありがとうございます、既存のものを変更したり、新しいものを作成することによって、あなたの移行にevent_idを外部キーを作成する必要があります。

それがこの

class AddEventForeignKeyToLinks < ActiveRecord::Migration 
    def up 
    change_table :links do |t| 
     t.references :event 
    end 
    end 

    def down 
    remove_column :links, :event_id 
    end 
end 

編集のようなものでなければなりませんので、あなたはすでに、それはあなたが新しいものを作成をお勧めしますそれらを移行しておりますので:あなたはコマンド

を使用する必要があり、移行ファイルを作成することを忘れないでくださいその後、
rails generate migration AddEventForeignKeyToLinks 

またはその他の名前AddEventForeignKeyToLinks


のルート

resources :events do 
    resources :links 
end 
+0

あなたは答えてくれてありがとう:) しかし、今では言う:#用 未定義のメソッド 'event_links_path」<#<クラス:0x007fd1de8573e0:> 0x007fd1de908320> – gaggina

+0

は、あなたがルートを定義していますか? –

+0

私のルートは次のようになります。リソース:イベント 資源:あなたは 'リソースのようにそれを定義したい場合があります – gaggina