0

我是 Rails 新手,遇到嵌套路由问题。

我有用户,每个用户在单独的模型中都有一个配置文件。尝试访问用户配置文件

/users/1/profile

产生错误:

找不到没有 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,它成功返回了第一个用户的个人资料。

将不胜感激任何帮助!

4

2 回答 2

1

用户 ID 将以params[:user_id]. 检查您的日志以了解正在传递和解释的参数。params[:id]不在那里。

于 2013-08-11T15:43:00.707 回答
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
    
于 2013-08-11T15:49:05.830 回答