У меня есть две модели, Page и PageContent.
class Page < ActiveRecord::Base
has_many :page_contents
end
class PageContent < ActiveRecord::Base
belongs_to :page
end
Страница имеет атрибут: css_design, но я хочу иметь возможность редактировать этот атрибут из моей формы PageContent. Есть идеи?
Я вижу много acceptpts_nested_attributes и fields_for совета, но они не работают , потому что все они, похоже, для форм, которые либо Создание целых новых экземпляров другой модели из формы (например, создание задач из формы проекта) или Б. Обновление связанных записей через родительский элемент. Я хочу сделать наоборот - я хочу обновить запись родителя через связанные записи.
Любая помощь очень ценится! Большое спасибо заранее!
- Mark
UPDATE
Я добавил следующее в мою модель PageContent:
def css_design
page ? page.css_design : nil
end
def css_design= (val)
if page
page.update_attribute 'css_design', val
else
@css_design = val
end
end
after_create :set_page_css_design_on_create
def set_page_css_design_on_create
self.css_design = @css_design if page && @css_design
end
И у меня в действиях создания и обновления:
@page_content.update_attributes params[:page_content]
Но я получаю:
NoMethodError (undefined method `css_design=' for #<Page:0x00000003a80338>):
app/models/page_content.rb:13:in `css_design='
app/controllers/page_contents_controller.rb:56:in `new'
app/controllers/page_contents_controller.rb:56:in `create'
Когда я впервые создаю page_content. Я скопировал и вставил этот материал прямо из своих файлов, поэтому, если вы видите что-то странное, пожалуйста, дайте мне знать!