我有兩個模型,Page和PageContent。如何在Ruby on Rails中使用一種形式更新兩個模型?
class Page < ActiveRecord::Base
has_many :page_contents
end
class PageContent < ActiveRecord::Base
belongs_to :page
end
頁有:css_design屬性,但我希望能夠從我的PageContent形式編輯屬性。有任何想法嗎?
我看到了很多的accepts_nested_attributes和fields_for的意見,但他們不工作,因爲他們都似乎是項目,是指A.創建從一個不同的模型的整個新實例的形式表單(例如,從項目表單創建任務),或者B.通過父項更新關聯記錄。 我想做相反的事情 - 我想通過關聯的記錄更新父母的記錄。
任何幫助,非常感謝!提前謝謝了!
--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。我直接從我的文件中複製和粘貼這些東西,所以如果你看到任何奇怪的東西,請讓我知道!
FWIW,我會期待accept_nested_attributes_for在這裏工作,但有幾個其他解決方案值得探討...... – 2011-05-11 06:01:42