むしろ、シンプルだが多くのフィールドとサブレコードがある自分のレコードセットを詳しく説明します。github で指定された例を機能させたいだけです。つまり、https://github.com/activescaffold/ active_scaffold/wiki/API%3A-ネスト
# 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
明らかに、連絡先テーブルには company_id (つまり、外部キー) の列があります。
「そのまま」、会社のコントローラーでは、「会社」は「会社」である必要があるようです。したがって、その変更後、 config.nested... 行により次のエラーが発生します:-
nil:NilClass のルーティング エラー未定義メソッド「add_link」
これを修正しようとして(そして失敗して)、コメントアウトしたところ、うまく機能しましたが、1対1(またはなし)の関係が必要なので、変更を加えました(連絡先は連絡先に変更する必要があり、それ以外の場合はRailsオブジェクト): -
# app/models/company.rb
class Company < ActiveRecord::Base
has_one:contact
end
動作しているように見えますが、連絡先が更新されると、フォームがめちゃくちゃになり、更新された連絡先がフォームの一番上、実際には下のレコード、つまり会社のレコードに属するフィールド ラベルのすぐ下に表示されます。また、企業レコードの作成時に複数の連絡先を作成することもできますが、これは別の方法で制限されるか、config.nested.add_link が機能する場合は修正される可能性があります。