Rails: NoMethodError,如何显示用户配置文件?

Rails: NoMethodError, how do I show users profiles?

当我在顶部输入时,/users/1/users/2 我得到相同的页面,但有 2 个用户。它只是将我重定向回 show.html.rb 页面。我不确定,但也许我没有每个用户的页面。也许你可以看看我的代码。我无法显示 <%= @user.name %>,我得到 NoMethodError in Users#show。也许这就是问题所在...

show.html.rb

Avatar, <%= image_tag(current_user.avatar.url(:medium)) %>

Hello, <%= current_user.name %>

routes.rb

Rails.application.routes.draw do

   resources :products


   get 'users/index'
   get 'users/show'

   devise_for :users do
       resources :posts 
   end

   get 'users/:id' => 'users#show', as: :user


   resources :posts do
     member do
         get "like", to: "posts#upvote"
         get "dislike", to: "posts#downvote"


     end
     resources :comments
   end

   root 'posts#index'

end

我有 Show.html.rb 中的每个用户和显示 Index.html.rb

中所有用户的索引

users_controller.rb

class UsersController < ApplicationController
    before_action :authenticate_user!

    def index
        @users = User.all
    end

    def edit
        @user = User.create( user_params )
    end

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


 private

    def user_params
        params.require(:user).permit(:name, :email, :avatar)
    end

end

users_controller.rb

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

您正在尝试查找具有他姓名的用户并且您正在传递 ID。如上所述更改查询并检查您是否为 show 方法添加了两条路线,因此删除第一条路线。

有没有show page under user.if 不是说新建一个..我觉得可能也是个问题

您已经为 users/show 显示页面创建了两条路线。删除 get 'users/show' 并重试

您在 show 页面中使用了 current_user,这就是为什么您每次都得到相同结果的原因。路线不是问题。您应该将控制器的操作更改为:

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

然后将您的视图更新为:

Avatar, <%= image_tag(@user.avatar.url(:medium)) %>
Hello, <%= @user.name %>