我有一个与设计相关的用户模型。 Userinfo模型属于User模型。 userinfo模型通过表单接收一些信息(姓名,电子邮件,学校......)。现在,只要用户注册或登录,程序就会检查current_user是否填写了信息,如果没有,他们将被路由以填写信息页面。如果他们填写了信息,他们将被路由到主页,即userinfo索引页面。索引页面显示站点上所有用户的userinfo。
路由的工作方式:
Userinfo模型:
class Userinfo < ActiveRecord::Base
belongs_to :user
has_many :videos, through: :user
def info_complete?
name? && email? && college? && gpa? && major?
end
end
应用程序控制器:
def after_sign_in_path_for(resource)
if resource.userinfo.info_complete?
root_path
else
new_user_info_path
end
end
问题
当用户登录时,如果用户填写了userinfo,我希望它转到用户的个人资料页面,而不是索引或根路径。配置文件路径是“userinfo #show”。对于userinfo #index,不需要id,但要转到“userinfo#show”,需要id。因为userinfo #index是'/ userinfos',而userinfos #show是'/ userinfos / userinfo_id'。我的问题是,如何在用户登录后将用户路由到userinfo#show,个人资料页面以及是否填写了userinfo数据?
这可能很简单,但我觉得我错过了什么。如何访问应用程序控制器中的当前userinfo_id?所以我可以像以下一样路由它:
def after_sign_in_path_for(resource)
if resource.userinfo.info_complete?
userinfo_path(current_user.userinfo_id)
else
new_user_info_path
end
end
或者类似于上面的东西?
答案 0 :(得分:1)
正如在回答这个问题时所做的那样 Dynamic path helpers rails
def after_sign_in_path_for(resource)
if resource.userinfo.info_complete?
user_info_path(current_user.userinfo_id)
else
new_user_info_path
end
end