为什么我会收到路由错误?

时间:2011-03-27 03:28:32

标签: ruby-on-rails ruby ruby-on-rails-3 routing

我有这个链接:

<%= 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

我做错了什么?

1 个答案:

答案 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? %>