2013-08-27 28 views
-2

美好的一天。 我是新来的红宝石,我试图建立一个嵌套的“链接”字段的简单发布表单。RoR寻找专栏我已经使用迁移命令删除了专栏

如:

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

的,尽管该列并不“新”控制器后看起来像这样

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

你能告诉你链接控制器...? – Sami

+0

链接嵌入帖子内,我没有单独的控制器。尽管我已经对后期模型进行了以下更改。 \t has_many:links,:dependent =>:destroy accepted_nested_attributes_for:links – shultz

+0

检查您是否已将“removed_field”从链接模型中的attr_accessible中移除。 – Sami

回答

0

删除ul的所有内容标签列出您的文章的链接可能会解决您的错误。既然你不想在links表中列post_id列,我猜你也不想要这个关联。因此,当您完成删除操作后,请从模型中删除此关联,并从控制器中删除正确的呼叫(例如3.times {@new_post.links.build})。

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