无法保存嵌套表单详细信息

时间:2012-02-10 05:48:07

标签: ruby ruby-on-rails-3.1

我这里有两个模特,一个主人和一个笔记。在底部的所有者表单中,我有一个用于存储注释的文本区域的嵌套表单。 它适用于new,但在编辑时如果没有音符则不会保存音符和current_user之间的关系。它会保存注释,但不会保存记录注释的user_id。

这是我的控制器的样子

感谢您提前提供任何帮助,或至少在寻找:)

owner.rb

class Owner < ActiveRecord::Base

  accepts_nested_attributes_for :notes, :reject_if => lambda { |a| a[:note_text].blank? }

end

owners_controller.rb

def edit
  @owner = Owner.find(params[:id])
  unless @owner.notes.present?   
    @owner.notes.build
  end
end

def update
  @owner = Owner.find(params[:id])
  @owner.notes.each do |n|
    if n.created_by_id == nil
      n.created_by_id = current_user
    else
      n.updated_by_id = current_user
    end
  end
  respond_to do |f|
    if @owner.update_attributes(params[:owner])
      f.html { redirect_to @owner, notice: 'Owner successfully updated.' }
      f.json { head :ok }
    else
      f.html { render action: "edit" }
      f.json { render json: @owner.errors, status: :unprocessable_entity }
    end
  end 

哦,我的note.rb模型

class Note < ActiveRecord::Base

  belongs_to :pet
  belongs_to :owner
  belongs_to :created_by, :class_name => "User", :foreign_key => "created_by_id"
  belongs_to :updated_by, :class_name => "User", :foreign_key => "updated_by_id"

1 个答案:

答案 0 :(得分:0)

@owner.update_attributes(params[:owner])是更新方法中存在注释的地方,但是之后执行@owner.notes.each当然,代码块会重新锁定当前用户不会跑。