我使用脚手架发电机做了几个模型。
有:
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| %>
我做错了什么?
提前致谢
答案 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