我正在研究RailsApps Stripe教程。
当通过devise registration
控制器创建新订阅者时,他们将通过content
控制器定向到其内容页面。我想在他们的内容页面上使用他们在注册时创建的name
和email address
。但我似乎无法将这些参数带入内容控制器。
我将@user = User.find(params[:id])
放入content_controller
,但收到错误"Couldn't find User without an ID".
在错误页面上,它列在“请求信息”下;机架会话:"warden.user.user.key"=>["User", [2]
,
那是否意味着用户#2的ID被传递给content_controller
,但我无法访问它?
答案 0 :(得分:0)
我将@ user = User.find(params [:id])放入content_controller但是我 收到错误“无法找到没有ID的用户”。
此错误表示params[:id] = nil
,即在将用户重定向到id
时,您没有在params哈希中传递content page
。
可能的解决方案:
使用Devise
,您将获得一个名为current_user
的辅助方法,该方法返回当前登录用户的实例。因此,您可以直接使用current_user
来访问当前登录用户的属性。例如:
要访问当前登录用户的name
和email
字段,您需要做的就是
current_user.name
current_user.email
在routes.rb
中,通过id
页面的路线传递当前登录用户的content
,如下所示:
## Add :id dynamic segment to your content page route
get "content/:id", :to => "contents#action_name", :as => "content_page"
由于我没有路线详情,您需要根据您的要求修改上述路线。
接下来,在content
之后将用户重定向到sign up
页面时,只需通过名为ApplicationController
的{{1}}方法中的当前登录用户,如下所示(您需要覆盖此内容)如果要将用户重定向到与默认after_sign_up_path_for
不同的路由,请设计方法:
root path