динамическая вложенная форма всегда создает лишнюю пустую запись - с помощью formtastic_coocoon

Я использую formtastic и formtastic_cocoon для создания вложенной формы.

Кажется, все работает хорошо, динамически добавляя вложенную форму к существующей, за одним исключением.

У меня есть пользователи, а у пользователей есть записи.

Когда я создаю пользователя и добавляю запись, я получаю

-User
   - Entry (empty)
   - Entry Test 1

Я должен был иметь только

-User
   - Entry Test 1

Я не уверен, почему всегда появляется пустая запись.

Мои модели

class User < ActiveRecord::Base
   validates :name, :presence => true
   has_attached_file :photo

   has_many :tasks, :dependent => :destroy

   accepts_nested_attributes_for :tasks, :allow_destroy => true

end

class Task < ActiveRecord::Base
   attr_accessible :entry

   belongs_to :user


end

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

  def create
    @user = User.new(params[:user])
    if @user.save
      flash[:notice] = "Successfully created user."
      redirect_to @user
    else
      render :action => 'new'
    end
  end

 def create
    @task = Task.new(params[:task])
    if @task.save
      flash[:notice] = "Successfully created task."
      redirect_to @task
    else
      render :action => 'new'
    end
  end

В базе данных появляются пустые записи, поэтому я не думаю, что это проблема с файлами html.erb, но я могу опубликовать их здесь, если это поможет.


person pedalpete    schedule 09.02.2011    source источник


Ответы (1)


Оказывается, это может быть проблема с тем, как formtastic_cocoon обрабатывает формы.

При просмотре источника html вложенная форма находится на странице, но скрыта.

Я сменил модель на

accepts_nested_attributes_for :tasks, :reject_if=> proc {|attributes| attributes[:entry].blank?}, :allow_destroy => true
person pedalpete    schedule 09.02.2011
comment
Обратите внимание, что с текущей версией cocoon (замена formtastic-cocoon) в этом больше нет необходимости. - person nathanvda; 15.10.2011
comment
Но это нужно только formtastic. - person Mindbreaker; 30.01.2014