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 内 (view>events dir 内) に次のように書きました。

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

私は何を間違えましたか?

前もって感謝します

4

1 に答える 1

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
于 2012-05-06T23:17:09.377 に答える