PageContentから継承するPageContent::Textのようなさまざまなタイプのページコンテンツを持つページモデルで実行されているRails 4インスタンスがあります。
私のフォームでは、フォームのスニペットでわかるように、すべての @page.page_contents をレンダリングします。
ページを更新すると、レコードが更新されず、新しいレコードとして作成されます。
# update controller
class Admin::PagesController < Admin::BaseController
def update
@page = Page.find_by_url(params[:id])
respond_to do |format|
if @page.update_attributes(page_params(@page.type.parameterize.gsub('page','')))
format.html { redirect_to edit_admin_page_path(@page) }
else
format.html { render :action => "edit" }
end
end
end
def page_params(type)
params.require("#{type}_page".to_sym).permit(:name, :contents_attributes => [:body, :type])
end
end
# content model
class PageContent::Text < PageContent
end
# page model
class Page < ActiveRecord::Base
has_many :contents, class_name: 'PageContent', dependent: :destroy
accepts_nested_attributes_for :contents
end
# form snippet
<textarea class="form-control wysihtml5" id="content_page_contents_attributes_0_body" name="content_page[contents_attributes][0][body]">
testsetseet</textarea>
<input id="content_page_contents_attributes_0_type" name="content_page[contents_attributes][0][type]" type="hidden" value="PageContent::Text" />
<input id="content_page_contents_attributes_0_id" name="content_page[contents_attributes][0][id]" type="hidden" value="1" />
どんなアイデアでも大歓迎です!
前もって感謝します