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 %>
当我在顶部输入时,/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 %>