我如何让form_for(@example)在我的Collections #how中工作,例如belongs_to Collection

时间:2013-08-18 23:41:56

标签: ruby-on-rails rails-migrations rails-models

对我来说这似乎是一个重新出现的问题(可能是概念上的),希望这次我能解决它! #stillLearning

两种型号。 一个集合has_many:例子 示例belongs_to:collection

Collection有一个标题:string 示例包含collection_id:integer和description:text

在我的collection / show中,我想通过这个简单的表单添加一个Example:

<%= form_for(@example) do |e| %>

    <h3><%= e.label :description %></h3>
    <%= e.text_area :description %>
    <%= e.submit %>

<% end %>

但我得到NoM​​ethodError ......

undefined method `description' for #<Collection:0x007fe3c4087898>. 

我明白@collection没有:description,这意味着我必须在Collection和Example之间建立一个链接吗?

假设我的猜测是正确的,我试过了:

rails g migration AddExampleRefToCollections example:references

但出现以下错误:

SQLite3::SQLException: near "references": syntax error: ALTER TABLE "collections" ADD "example" references/Users/davidngo/.rvm/gems/ruby-1.9.3-p429/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `initialize'

1 个答案:

答案 0 :(得分:1)

如果Collection有多个Examples,那么Example应该是数据库中id引用Collection的那个:

rails g migration AddCollectionIdToExamples collection_id:integer

在CollectionsController#show中,确保您要实例化一个新的空示例,以便在您将要使用的form中使用:

def show
  #stuff
  @example = @collection.examples.new