对我来说这似乎是一个重新出现的问题(可能是概念上的),希望这次我能解决它! #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 %>
但我得到NoMethodError ......
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'
答案 0 :(得分:1)
如果Collection
有多个Examples
,那么Example
应该是数据库中id引用Collection
的那个:
rails g migration AddCollectionIdToExamples collection_id:integer
在CollectionsController#show中,确保您要实例化一个新的空示例,以便在您将要使用的form
中使用:
def show
#stuff
@example = @collection.examples.new