找不到没有带one_to_one关联ID的用户

时间:2013-08-11 15:38:55

标签: ruby-on-rails

我是rails的新手,并且遇到嵌套路由问题。

我有用户,每个用户在一个单独的模型中有一个配置文件。试图访问用户个人资料

  

/用户/ 1 /简档

产生错误:

  

找不到没有ID的用户

请求参数显示:

  

{ “USER_ID”=> “中1”}

有类似问题的问题,但无法找到解决方案。

路线:

resources :users do
  resource :profile
end

配置文件控制器:

class ProfilesController < ApplicationController
  def show
    @user_profile = User.find(params[:id]).profile
  end
end

来自用户模型:

has_one :profile, dependent: :destroy
before_create :build_profile

来自个人资料模型:

belongs_to :user

我想User.find(params[:id]).profile是我出错的地方。我将find(params[:id])更改为first,这会成功返回第一个用户的个人资料。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

用户ID将以params[:user_id]的形式进入。检查日志以获取传递和解释的参数。 params[:id]不存在。

答案 1 :(得分:0)

我同意你的路线设计,它应该不比简单的配置文件更复杂。

但是有一些问题:

  1. routes.rb中的路由应为

    resources :user do
      member do
        get 'profile'
      end
    end
    

    这将允许user/1/profile路线

  2. 根据上述路由,profile方法应该在UsersController中而不是配置文件控制器中。 (在这种情况下不需要配置文件控制器)

    class UsersController < ApplictionController
      def profile
        user = User.find(params[:id])
        @profile = user.profile
      end
    end