У меня есть две модели: Post и Image в приложении форума, где сообщения расположены в формате parent-child с использованием dm-is-tree. До этого момента изображения были частью модели Post. Поскольку модель Post становится громоздкой, и мне нужно добавить больше глубины, чтобы пометить изображение, я работаю над тем, чтобы выделить изображение в его собственную модель, но все еще остается частью сообщения в выводе.
Итак, я начал интегрировать dm-accepts_nested_attributes в простом порядке:
class Post
include DataMapper::Resource
property :id, Serial
property :istop, String
property :created_at, DateTime
property :updated_at, DateTime
property :content, Text
has n, :images
accepts_nested_attributes_for :images
is :tree, :order => [:istop, :created_at]
class Image
include DataMapper::Resource
property :id, Serial
property :created_at, DateTime
belongs_to :post
property :image, String, :auto_validation => false # Carrierwave image info
mount_uploader :image, ImageUploader # Carrierwave uploader
У меня есть эта форма (haml) на каждой странице для создания сообщения:
= form_for [@forum,Post.new], :html => {:multipart => true} do |f|
= f.hidden_field :istop, :value => "parent"
= f.text_area :content
= f.fields_for :simages_attributes do |g|
= g.file_field :image
.actions
= f.submit
Что идет к этому контроллеру:
def create
@forum = Forum.get(params[:forum_id])
@post = @forum.posts.create(params[:post])
respond_to do |format|
if @post.save
format.html { redirect_to(forum_path(@forum), :notice => 'Post was successfully created.') }
else
format.html { redirect_to(forum_path(@forum), :notice => 'There was an error in posting') }
end
end
end
Ошибка, которую я получаю при публикации:
undefined method
[] 'для # `
, NoMethodError
Я не уверен, что я делаю или откуда это происходит в данный момент. Я не уверен, правильно ли я настроил форму (я следовал аналогичным учебным пособиям по активной записи и еще не углублялся в код dm-accepts_nested). Я могу установить некоторые более простые вещи через командную строку, но не изображения. Я понимаю основы вложения, но не совсем понимаю, как интегрировать его в то, что я делаю.
Может, кто-то знает. Любая помощь приветствуется.