【发布时间】:2013-11-05 16:40:32
【问题描述】:
我正在使用 Devise,在我的显示视图中我有:
<%= link_to "Profile", current_user %>
访问视图时出现错误:
No route matches {:controller=>"users", :action=>"show"} missing required keys: [:id]
我的表演方法(由一位非常有帮助的 SO 成员推荐):
def show
if params[:id]
if current_user
@user = current_user
else
flash[:notice] = "This page is not available"
redirect_to root_path
end
else
@user = current_user
end
end
我的路线:
devise_for :users, :path => '', :path_names => { :sign_in => 'login', :sign_out => 'logout',
:password => 'password', :confirmation => 'verification',
:unlock => 'unblock', :registration => 'signup',
:sign_up => 'new' }
get 'login' => 'users/login'
devise_scope :user do
get 'login', to: 'devise/sessions#new'
get 'users/login', to: 'devise/sessions#new'
get 'logout', to: 'devise/sessions#destroy'
get 'signup', to: 'devise/registrations#new'
get 'password', to: 'devise/passwords#new'
match 'users/secret', to: "devise/passwords#create", via: :post
match 'sessions/user', to: 'devise/sessions#create', via: :post
match 'users/signup', to: 'devise/registrations#create', via: :post
match 'users/signup', to: 'devise/registrations#create', via: :post
end
#resources :users
#resources :users
resources :sessions
# Authenticated Users:
authenticated :user do
root to: "users#show", as: :authenticated_root
end
# Non-Authenticated Users
root to: 'site#index'
get '', to: 'users#show', as: 'user'
get 'edit', to: 'users#edit', as: 'user/edit'
知道为什么 current_user 助手返回错误吗?
【问题讨论】:
-
user_path(current_user)呢? -
同样的错误,但现在它引用了
user_path(current_user)。 -
未经身份验证的用户没有路由...您尝试访问此路径时是否已登录?
标签: ruby-on-rails devise routes ruby-on-rails-4