-2

再会。我是 ruby​​ 新手,我尝试构建一个带有嵌套“链接”字段的简单帖子表单。

例如:

*****
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

前 2 个迁移文件是创建表,当我为链接创建表时,我还添加了 post_id 列。现在我决定使用以下命令删除此列:

$->rails g migration remove_field_name_from_links post_id:links
$->rake db:migrant

post 的“新”控制器如下所示

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>

有任何想法吗?

4

1 回答 1

0

删除ul列出帖子链接的标签的所有内容可能会解决您的错误。由于您不想要表格post_id中的列links,我猜您也不想要这种关联。3.times {@new_post.links.build}因此,当您完成删除此操作后,还要从您的模型中删除此关联并从控制器中删除正确的调用(例如)。

发生错误是因为当您有关联时,Rails 期望links表有post_id列。由于您删除了此列,因此会出现错误。

于 2013-08-27T08:16:10.813 回答