链接到用户配置文件Rails

时间:2016-08-09 11:22:57

标签: ruby-on-rails ruby-on-rails-4 devise

我正在使用设计为注册用户创建一个配置文件,一旦注册它会自动创建配置文件,我的问题是,在仪表板内部,我想链接到他们的配置文件并且不确定我需要传递给哪些参数满足id参数的路径?

用户模型:

class User 
  has_one :student_profile, dependent: :destroy
end

个人资料模型:

class StudentProfile < ActiveRecord::Base
    belongs_to :user
    validates_associated :user

    def completed_profile?
        self.first_name.present? && self.last_name.present?
    end

end

我正在为控制器使用脚手架生成的代码并且未触及?

在我的View Html.erb文件中,我想使用登录的用户配置文件进行传递,以便他们可以查看或编辑它。

 <%= link_to "View Profile", student_profile_path(@student_profile), :class => 'btn btn-primary' %> 

然而它显示错误[:id],我理解,但我不确定要传递到“Student_profile_path()”链接。

我是否需要更新配置文件控制器中的show方法?

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:0)

如果您在@student_profile

中获得student_profile对象,请尝试此操作
<%= link_to "View Profile",  student_profile_path(id: @student_profile.id), :class => 'btn btn-primary' %>

答案 1 :(得分:0)

你的@student_profile不存在我想,如果你想显示current_user的学生档案,让我们使用:

 <%= link_to "View Profile", student_profile_path(current_user.student_profile), :class => 'btn btn-primary' %> 

<强>更新

要确保每个用户都存在student_profile,您可以在创建用户时创建默认的student_profile,代码如下:

class User < ActiveRecord::Base
  # Your current code
  before_create :build_student_profile
end

因此student_profile将使用user

构建

然后,您需要为已创建的用户完成此操作的另一个步骤,请在rails console

中运行此步骤
User.where.not(id: StudentProfile.pluck(:user_id)).find_each{ |user| user.create_student_profile }