0

我正在使用 Mongoid、awesome_nested_fields gem 和 rails 3.2.8。

我有在客户端上运行的功能(添加多个字段),但是当我尝试保存时,我收到“nil:NilClass 的未定义方法`update_attributes'”错误。

以下是所有相关信息:

配置文件.rb

class Profile
    include Mongoid::Document
    include Mongoid::Timestamps

    has_many :skills, :autosave => true
    accepts_nested_attributes_for :skills, allow_destroy: true  
    attr_accessible :skills_attributes

end

技能.rb

class Skill
    include Mongoid::Document
    belongs_to :profile 
    field :skill_tag, :type => String
end

看法

<%= simple_form_for(@profile) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">

            <div class="items">
                <%= f.nested_fields_for :skills do |f| %>
                <fieldset class="item">
                    <%= f.input :skill_tag, :label => 'Skills:' %>
                    <a href="#" class="remove">Remove Skill</a>

                    <%= f.hidden_field :id %>
                    <%= f.hidden_field :_destroy %>
                </fieldset>
                <% end %>
            </div>
            <a href="#" class="add">Add Skill</a>
      </div>

  <div class="form-actions">
    <%= f.button :submit, :class => 'btn' %>
  </div>
<% end %>

profile_controller.rb

  # PUT /profiles/1
  # PUT /profiles/1.json
  def update
    @profile = Profile.find(params[:id])

    respond_to do |format|
      if @profile.update_attributes(params[:profile])
        format.html { redirect_to @profile, notice: 'Profile was successfully updated.' } # Notice
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @profile.errors, status: :unprocessable_entity }
      end
    end
  end

** * ** * ** * **更新** * ** * ** * ***

我最终切换到 Ryan 的 nested_form gem,它就像一个魅力。

4

1 回答 1

0

您的消息直接指向失败的执行行,因此该行:

if @profile.update_attributes(params[:profile])

问题是@profile实例变量是nil并且rails找不到对象的update_attributes方法nil

您可以通过进入您启动应用程序的终端轻松检查您的服务器日志中的params哈希值,以查看什么params[:id](可能根本没有定义)。

或者您可以在您的应用文件夹中查看您的开发日志:

tail -n 1000 development.log | egrep params
于 2012-10-26T21:00:39.527 回答