当我在顶部输入/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
答案 0 :(得分:2)
users_controller.rb
def show
@user = User.find(params[:id])
end
您正在尝试使用他的名字找到用户并且您正在传递ID。如上所述更改查询并检查并为show方法添加了两条路线,因此请删除第一条路线。
答案 1 :(得分:1)
你在user.if下有显示页面吗?不要意味着创建一个..我认为这可能也是一个问题
答案 2 :(得分:1)
您已为users/show
展示页面创建了两条路线。删除get 'users/show'
然后重试
答案 3 :(得分:1)
您在current_user
页面中使用的是show
,这就是您每次都能获得相同结果的原因。路线不是问题。您应该将控制器的操作更改为:
def show
@user = User.find params[:id]
end
然后将您的观点更新为:
Avatar, <%= image_tag(@user.avatar.url(:medium)) %>
Hello, <%= @user.name %>