无法让 Rails 3 Active Scaffold 嵌套表单/记录正常工作
Posted
技术标签:
【中文标题】无法让 Rails 3 Active Scaffold 嵌套表单/记录正常工作【英文标题】:Can't get Rails 3 Active Scaffold Nested Forms/Records to work properly 【发布时间】:2012-05-23 13:27:57 【问题描述】:比较详细我自己的记录集,很简单但是有很多字段和子记录,我只是希望能够让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:NilClass 的未定义方法“add_link”
在尝试(但失败)解决此问题后,我只是将其注释掉并且效果很好,但是我需要一对一(或没有)关系,因此进行了更改(联系人必须更改为联系人,Rails 对象否则):-
# app/models/company.rb
class Company < ActiveRecord::Base
has_one:contact
end
它似乎可以工作,但是当更新联系人时,它会使表单变得一团糟,在表单顶部显示更新的联系人,就在实际属于下面记录的字段标签下方,即公司记录.它还允许在创建公司记录时创建多个联系人,但这可能会受到另一种方法的限制,或者如果 config.nested.add_link 有效,则可能会被修复。
【问题讨论】:
【参考方案1】:我有同样的问题,只需使用这个(它在你发布的同一个链接中):
config.nested.add_link(:contacts, :label => "Company's contacts", :page => true)
【讨论】:
感谢您的回复,对不起,我没有回来查看过,因此我最终改用了 ActiveAdmin,效果很好。以上是关于无法让 Rails 3 Active Scaffold 嵌套表单/记录正常工作的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 sequel-rails gem 安装 rails active_storage
配置 active_merchant 以与 Rails 3 应用程序兼容
Rails 3 - Active_admin 可以使用现有的用户模型吗?
如何在 Rails 2.3.8 中使用带有关联的 Active 脚手架列出活动记录?