【发布时间】:2017-04-26 18:33:18
【问题描述】:
我使用的是 Rails 5。当我的用户登录时,我想用通用的“/dashboard”主页链接替换“/users/4”操作。我还希望删除用户在浏览器中输入“/users/##”的能力,而只允许他们访问“/dashboard”。我该怎么做呢?目前,在我的 config/routes.rb 我有
get '/dashboard', to: 'users#show'
resources :users
在我的 users_controller.rb 文件中
def show
@user = User.find(params[:id])
@user_subscriptions = UserSubscription.find_active_subscriptions_by_user(@user)
end
但目前当我在浏览器中访问“/dashboard”时,我得到了错误
找不到具有 'id'=的用户
如何设置路线以禁用显示操作但允许 /dashboard 成功导航到上述操作?
【问题讨论】:
-
你在用设计吗?
-
Nooooooooooooooo(需要额外的字符,否则不会发表评论)
-
如果您想要一个好的建议,请使用 devise 进行认证。它将为您提供以更简单的方式制作所需内容的方法。此外,它还会为您提供通过 Facebook、Twitter、Googe+ 和其他 OAuth 提供商进行身份验证所需的结构。
-
在您的这种情况下,一个 if 就可以解决所有这些问题,并且您可以使用
current_user来避免您遇到的Could't find User with 'id'=错误... -
我对 Rails 有点陌生,也许这就是为什么我不明白你在描述什么。 “if”如何帮助重写我的 brokne “get '/dashboard', to: 'users#show'” 规则并禁用“show”操作?
标签: ruby controller routes config ruby-on-rails-5