我正在使用设计为注册用户创建一个配置文件,一旦注册它会自动创建配置文件,我的问题是,在仪表板内部,我想链接到他们的配置文件并且不确定我需要传递给哪些参数满足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方法?
任何帮助表示感谢。
答案 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 }