Ruby on rails 更新一个有一个关系模型

Ruby on rails 更新一个有一个关系模型,ruby-on-rails,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3.2,我有两种型号 class User < ActiveRecord::Base has_one :user_information, :dependent => :destroy attr_accessible :email, :name end 一切正常,但当我尝试更新记录时,出现以下错误: RuntimeError in User_informations#edit Called id for nil, which would mistakenly be 4 -- if

我有两种型号

class User < ActiveRecord::Base
  has_one :user_information, :dependent => :destroy
  attr_accessible :email, :name
end
一切正常,但当我尝试更新记录时,出现以下错误:

RuntimeError in User_informations#edit

Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
以下是我的用户信息控制器的编辑和更新操作

    def edit
        @user_information = UserInformation.find(params[:id])
      end 

  def update
    @user_information = UserInformation.find(params[:id])

    respond_to do |format|
      if @user_information.update_attributes(params[:user_information])
        format.html { redirect_to @user_information, notice: 'User information was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @user_information.errors, status: :unprocessable_entity }
      end
    end
  end
params[:id] # => @user.id
params[:user_information_id] # => @user_information.id

我想我只需要找到记录并进行编辑,但不需要。有人能帮我吗?

尝试从
用户信息中删除
所属的

讨论后更新

您的链接帮助程序应该在第一个位置使用两个参数
@user
。(您可以从
rake routes | grep user\u information
)的结果中看到它)

因此,您应该将
find
更改为

@user_information = UserInformation.find(params[:user_information_id])

User\u informations#edit
的拼写确认了我的身份。是否可以显示控制器类名和文件名。确定控制器名为UserInformationsController,文件名为UserInformations\u controller,编辑记录的路径为,因此链接帮助器应为
users\u user\u information(user\u id,user\u info\u id)
。助手的名称可以不同,但请注意这两个参数。哦,对不起,ck3g,我是rails的新手:s我不明白你对助手和参数的意思。请你提供一行
链接到“编辑”
rake routes | grep“用户信息#编辑”
?我不能这样做。我需要这个关联Tanks ck3g,我尝试你的建议,但我在尝试更新记录时仍然有相同的错误我很抱歉ck3g,但你对我所有控制器中的params[:id]params[:user\u information\u id]是什么意思???
<%= link_to 'Edit', edit_user_information_path(@user, @user_information) %>
params[:id] # => @user.id
params[:user_information_id] # => @user_information.id
@user_information = UserInformation.find(params[:user_information_id])