2012-05-06 95 views
0

我有一對夫婦的模型,我用腳手架生成器生成。問題與導軌,形式和關係

有:

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

我想每個事件有許多鏈接,鏈接所屬的事件。

所以在事件模型,我編碼:

has_many :links 

和鏈路模型內部:

belongs_to :event 

談完我已經運行:

rake db:migrate 

爲了建立數據庫。而我做了一對夫婦使用支架功能的事件。

現在我想直接在事件的show> views中添加鏈接。

的show.html.erb內(視圖>活動目錄內),我已經寫了:

<%= 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 

它說錯誤在這條線上:

<%= 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」 <#<類別:0x007fd1de908320>:0x007fd1de8573e0> – gaggina

+0

你有沒有定義的路由? –

+0

我的路線是這樣的:資源:鏈接 資源:事件 資源:事件做 資源: – gaggina