Не удается заставить вложенные формы/записи Rails 3 Active 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

Очевидно, что в таблице контактов есть столбец для company_id (т.е. внешний ключ).

«Как есть», кажется, что в контроллере компаний «компании» должны быть «компанией». Итак, после этого изменения строка config.nested... вызывает следующую ошибку: -

Ошибка маршрутизации неопределенный метод `add_link' для nil:NilClass

После попытки (и неудачи) исправить это, я просто прокомментировал это, и это работает довольно хорошо, однако мне нужно отношение один к одному (или ни одного), поэтому я внес изменение (контакты должны были измениться на контакт, в противном случае объекты Rails): -

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

Кажется, что это работает, но когда контакт обновляется, он создает беспорядок в форме, отображая обновленный контакт в верхней части формы, прямо под метками полей, которые фактически принадлежат записям ниже, то есть записям компании. Это также позволяет создавать более одного контакта при создании записи компании, но это может быть ограничено другим методом или, возможно, исправлено, если работает config.nested.add_link.


person Ahmad    schedule 16.05.2012    source источник


Ответы (1)


У меня была такая же проблема, просто используйте это (это в той же ссылке, которую вы разместили):

config.nested.add_link(:contacts, :label => "Company's contacts", :page => true)
person miligraf    schedule 11.07.2012
comment
Спасибо за ответ, извините, я никогда не возвращался, поэтому вместо этого я использовал ActiveAdmin, который работал довольно хорошо. - person Ahmad; 14.06.2013