我在写博客时在博客中显示用户数据时遇到了一些小问题。我有 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
路径仍然没有。我做错了什么?
答案 0 :(得分:1)
在控制器中的show
操作中,它应该是:
User.find(params[:id])
此外,链接应为:
<%= link_to 'View Profile', profile_path(user) %>