ruby on rails-具有设计的用户配置文件页面-路由以显示配置文件页面

时间:2018-09-28 10:52:38

标签: ruby-on-rails ruby devise

嗨,我在导航栏上尝试实现指向个人资料页面的link_时遇到错误。它会显示路由错误,缺少键ID,仅当我将链接放在导航栏上时才会出现,否则我可以访问我的个人资料帐户。

这是错误:

No route matches {:action=>"show", :controller=>"user"}, missing required keys: [:id]

这是我的代码:路线

get 'user/show/:id', to: 'user#show', as: 'profil'
devise_for :users
 root 'home#index'
resources :users

用户控制器:

def show
    @user = User.find(params[:id])
end

我在其中插入链接的application.html使我的应用崩溃

<%= link_to 'profil', profil_path , class: "dropdown-item" %> 

先谢谢了。

1 个答案:

答案 0 :(得分:2)

路线修改:-

root 'home#index'
devise_for :users
resources :users, except: [:show]
get 'user/show/:id', to: 'users#show', as: 'profil'
  

缺少必需的键:[:id]

这意味着在users#show的路由中,您需要将params id作为用户ID传递

Devise具有current_user,它是已登录的用户对象,因此在application.htm中使动态下拉列表动态说出用户是否登录

<%if current_user.present?%>
   <%= link_to 'profil', profil_path(id: current_user.id) , class: "dropdown-item" %>
<%end%>

用户控制器

class UsersController < ApplicationController
  before_action :authenticate_user!
  def show
   @user = User.find(params[:id])
  end
end