我有这个链接:
<%= link_to "Profile", user_profile_path(current_user) %>
当我尝试访问配置文件控制器中的show时,它会给我一个路由错误。
这是我的routes.rb:
resources :users do
resources :profiles
end
这是配置文件控制器中的show方法:
def show
@profile = @user.profiles.find(params[:id])
end
我的用户模型中也有这个回调:
before_create :build_profile
我做错了什么?
答案 0 :(得分:1)
您错过了个人资料ID。
这样的事情:
<%= link_to "Profile", user_profile_path(:user_id => current_user.id, :id => profile.id) %>
修改强>
这非常肮脏,你可能不应该首先嵌套这些对象,但这可能会让你超越当前的问题。
<%= link_to("Profile", user_profile_path(:user_id => current_user.id, :id => current_user.profile.id)) unless current_user.profile.blank? %>
您应该认真考虑在路由中取消嵌套,只需根据自己的ID提供对配置文件的访问权限,而不是用户ID。
resources :users
resources :profiles
<%= link_to("Profile", profile_path(current_user.profile)) unless current_user.profile.blank? %>