铁轨,形式和关系的问题

时间:2012-05-06 23:08:27

标签: ruby-on-rails ruby ruby-on-rails-3

我使用脚手架发电机做了几个模型。

有:

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

我希望每个事件都有很多链接,链接属于事件。

所以在我编码的模型事件中:

has_many :links

在链接模型中:

belongs_to :event

继续我跑:

rake db:migrate

为了构建数据库。我使用脚手架功能制作了几个活动。

现在我想在活动的show>视图中直接添加链接。

在show.html.erb里面(在视图> 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| %>

我做错了什么?

提前致谢

1 个答案:

答案 0 :(得分: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