无法使Rails 3 Active Scaffold嵌套表单/记录正常工作

时间:2012-05-16 01:18:42

标签: ruby-on-rails activerecord nested scaffold

相当详细我自己的记录集,这很简单,但有很多字段和子记录,我只是希望能够在github上给出的例子能够工作,即https://github.com/activescaffold/active_scaffold/wiki/API%3A-Nested

# app/models/company.rb
class Company < ActiveRecord::Base
   has_many :contacts
end

# app/models/contact.rb
class Contact < ActiveRecord::Base
  belongs_to :company
end

# app/controllers/contacts_controller.rb
class ContactsController < ApplicationController
  active_scaffold :contacts do | config |
  end
end

# app/controllers/companies_controller.rb
class CompaniesController < ApplicationController
  active_scaffold :companies do |config|
    config.nested.add_link("Company's contacts", [:contacts])
  end
end

显然,contacts表有一个company_id列(即外键)。

'按原样',似乎在公司控制人员中,'公司'需要是'公司'。因此,在更改之后,config.nested ...行会导致以下错误: -

路由错误 nil的未定义方法`add_link':NilClass

在尝试(并且失败)修复此问题后,我只是将其评论出来并且效果很好,但是我需要一对一(或没有)关系,因此进行了更改(联系人必须更改为联系人,Rails对象否则): -

# app/models/company.rb
class Company < ActiveRecord::Base
   has_one:contact
end

它似乎有效,但是当联系人更新时,它会使表单混乱,在表单顶部显示更新的联系人,就在实际属于下面记录的字段标签下,即公司记录。它还允许在创建公司记录时创建多个联系人,但这可能受到另一个方法的约束,或者如果config.nested.add_link有效,则可能会修复。

1 个答案:

答案 0 :(得分:1)

我有同样的问题,只是使用它(它在你发布的同一个链接中):

config.nested.add_link(:contacts, :label => "Company's contacts", :page => true)