我是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
,这会成功返回第一个用户的个人资料。
非常感谢任何帮助!
答案 0 :(得分:1)
用户ID将以params[:user_id]
的形式进入。检查日志以获取传递和解释的参数。 params[:id]
不存在。
答案 1 :(得分:0)
我同意你的路线设计,它应该不比简单的配置文件更复杂。
但是有一些问题:
routes.rb中的路由应为
resources :user do
member do
get 'profile'
end
end
这将允许user/1/profile
路线
根据上述路由,profile
方法应该在UsersController中而不是配置文件控制器中。 (在这种情况下不需要配置文件控制器)
class UsersController < ApplictionController
def profile
user = User.find(params[:id])
@profile = user.profile
end
end