美好的一天。 我是ruby的新手,我试图用嵌套的“链接”字段构建一个简单的帖子。
E.g:
*****
TITLE
*****
POST
****
LINK - 1
LINK - 2
.
.
LINK - N
****
使用3个迁移文件我有以下模式文件
ActiveRecord::Schema.define(version: 20130827060014) do
create_table "links", force: true do |t|
t.text "link"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "posts", force: true do |t|
t.string "title"
t.text "body"
t.datetime "created_at"
t.datetime "updated_at"
end
end
前两个迁移文件是create table,当我为链接创建表时,我还添加了post_id列。 现在我决定使用以下命令删除此列:
$->rails g migration remove_field_name_from_links post_id:links
$->rake db:migrant
发布的“新”控制器看起来像这样
def new
@new_post = Post.new
3.times {@new_post.links.build}
end
问题是,即使该列不再存在,系统仍在查找它,因为我收到以下错误消息:
SQLite3::SQLException: no such column: links.post_id: SELECT "links".* FROM "links" WHERE "links"."post_id" = ?
这是视图文件:
<h1> <%= @post.title %></h1>
<p> <%= @post.body %></P>
<ul>
<%= for links in @post.links do %>
<li>
<%= links.link %>
</li>
<% end %>
</ul>
任何想法?
答案 0 :(得分:0)
删除列出帖子链接的ul
标记的所有内容可能会修复您的错误。由于您不希望post_id
表中的links
列,我猜您也不希望这种关联。因此,当您完成删除此操作后,请从模型中删除此关联,并从控制器中删除正确的调用(例如3.times {@new_post.links.build}
)。
发生错误是因为当您有关联时,Rails希望links
表具有post_id
列。由于您删除了此列,因此会出错。