缺少':user_id'尝试显示用户数据时的键

时间:2016-05-31 16:54:46

标签: ruby-on-rails

我在写博客时在博客中显示用户数据时遇到了一些小问题。我有 profiles_controller ,代码如下:

class ProfilesController < ApplicationController
  def index
    @profiles = User.all
  end
  def show
    @profile = User.find(params[:user_id])
  end
end

以下 routes.rb 中的路线:

get '/profiles', to: "profiles#index", as: 'profiles'
get '/profiles/:user_id', to: "profiles#show", as: 'profile'

以及以下模板:

index.html.erb

<div class="container">
  <div class="row">
    <% @profiles.each do |user| %>
      <div class="col-md-6">
        <p><%= user.first_name %> <%= user.last_name %></p>
        <%= link_to 'View Profile', profile_path %>
      </div>
    <% end %>
  </div>
</div>

show.html.erb

<div class="container">
  <p><%= @profile.first_name %> <%= @profile.last_name %></p>
  <p><%= @profile.email %></p>
  <p><%= @profile.about %></p>
</div>

我使用扩展的devise User模型,添加了attrs作为名字,姓氏和&#39; about&#39;部分。 当我尝试导航到/profiles路径时,它会返回以下错误:

ActionController::UrlGenerationError in Profiles#index
No route matches {:action=>"show", :controller=>"profiles"} missing required keys: [:user_id]

当我删除

<%= link_to 'View Profile', profile_path %> 
来自 index.html.erb

行,/profiles路径有效,但/profile路径仍然没有。我做错了什么?

1 个答案:

答案 0 :(得分:1)

在控制器中的show操作中,它应该是:

User.find(params[:id])

此外,链接应为:

<%= link_to 'View Profile', profile_path(user) %>