在Rails中访问参数3.2

时间:2014-04-27 18:03:06

标签: ruby-on-rails devise ruby-on-rails-3.2 stripe-payments railsapps

我正在研究RailsApps Stripe教程。

当通过devise registration控制器创建新订阅者时,他们将通过content控制器定向到其内容页面。我想在他们的内容页面上使用他们在注册时创建的nameemail 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,但我无法访问它?

1 个答案:

答案 0 :(得分:0)

  

我将@ user = User.find(params [:id])放入content_controller但是我   收到错误“无法找到没有ID的用户”。

此错误表示params[:id] = nil,即在将用户重定向到id时,您没有在params哈希中传递content page

可能的解决方案:

  1. 使用Devise,您将获得一个名为current_user的辅助方法,该方法返回当前登录用户的实例。因此,您可以直接使用current_user来访问当前登录用户的属性。例如:

    要访问当前登录用户的nameemail字段,您需要做的就是

    current_user.name
    current_user.email
    
  2. 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