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.html.erb 里面(在 view>events 目录里面)我写过:

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