2012-05-06 2 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 

내가 실행했습니다에 이동 데이터베이스를 빌드하십시오. 그리고 비계 기능을 사용하여 두 가지 이벤트를 만들었습니다.

이제 이벤트의보기>보기 내에 직접 링크를 추가하고 싶습니다.

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