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

Я использую 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, но я могу опубликовать их здесь, если это поможет.

1 Ответ

1 голос
/ 09 февраля 2011

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

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

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

accepts_nested_attributes_for :tasks, :reject_if=> proc {|attributes| attributes[:entry].blank?}, :allow_destroy => true
...