【发布时间】:2016-01-22 00:30:17
【问题描述】:
我希望用户有一个自己的页面,/users/52。所以我确实添加了一个新的控制器来实现这一点,控制器是 user_controller.rb。 但是现在,其他功能不起作用。
当我有如下路线时。 /users/sign_in 不起作用。 但是 /users/1 确实有效。
#Users/show!!!
match 'users/:id' => 'users#show', via: :get
# or
get 'users/:id' => 'users#show'
# or
resources :users
devise_for :users, controllers: {
sessions: 'users/sessions'
}
当我使用如下路线时。 /users/1 不起作用,但 users/sign_in 起作用。
devise_for :users, controllers: {
sessions: 'users/sessions'
}
class UsersController < ApplicationController
#def show
# @user = User.friendly.find(params[:id])
# @links = Link.all.where(user_id: @user).publish
#end
def index
@users = User.all
end
def show
@user = User.friendly.find(params[:id])
@links = Link.all.where(user_id: @user).publish
end
def new
end
end
【问题讨论】:
-
您是否创建了您尝试登录的用户,该错误表示在数据库中未找到某些内容(很可能是该用户)
-
用户已创建。因为如果我删除这些行,我可以登录网站: match 'users/:id' => 'users#show', via: :get # or get 'users/:id' => 'users#show' # or资源:用户
-
你试过
resources :users, only: [:show]吗?恐怕其他选项不起作用,因为设计操作将被解释为一个 ID(即在/users/sign_in中,新的将作为id: 'sign_in'传递给您的用户控制器)。此外,除非您将resources限制为:show,否则它可能会掩盖设计的路线。
标签: ruby-on-rails ruby activerecord devise