我正在尝试创建一个2页注册表单,用户首先使用UsersController
输入他们的电子邮件和密码,然后使用{DetailsController
指向第二页以获取个人信息(例如姓名,年龄) {1}}。这两个表以一对一的关系链接。
如何将user_id
字段从UsersController
传递到DetailsController
,以便保持关系?
User.first
已在示例中进行了硬编码。但是,我想将新的user_id
传递给@detail.user
变量。
def create
@detail = Detail.new(detail_params)
@detail.user = User.first
if @detail.save
flash[:notice] = "Your Details has been successfully saved"
redirect_to detail_path(@detail)
else
render 'new'
end
end
答案 0 :(得分:0)
实现此目的的众多方法之一是将Detail
作为User
的嵌套资源:
# config/routes.rb
resources :users do
resources :details
end
然后新细节页面的路线如下所示:/users/:user_id/details/new
。它允许您将用户从create
中的UsersController
操作重定向到第2页:
# app/controllers/users_controller.rb
def create
# ...
if @user.save
redirect_to new_details_path(user_id: @user.id)
else
render 'new'
end
在您的DetailsController中,您将能够从params获取user_id
:
# app/controllers/details_controller.rb
def create
@user = User.find(params[:user_id])
@detail = @user.detail.build(detail_params)
# ...
答案 1 :(得分:0)
使用会话。他们是免费的。示例=>
session[:foo] = 'bar'
您可以在下一页上访问它,例如session[:foo]
。如果要清除会话,只需将其设置为nil。