更改用户参数以包括其用户名

pwz2000

要在我的应用程序上查看用户页面,您必须输入其ID /user/2

如何使它username在参数中使用其代替用户显示页面的id值?我希望它是/user/username/username

任何帮助,将不胜感激。谢谢!

路线:

  get 'signup' => 'users#new'
  get 'login' => 'sessions#new'
  get 'logout' => 'sessions#destroy'
  get 'edit' => 'users#edit'
  get "/profile/:id" => "users#show"
  get "profile/:id/settings" => 'users#edit'
  get 'settings/:id' => 'users#settings'

 resources :users do
    resources :messages do
      post :new
      collection do
        get :askout
      end
    end
    collection do
        get :trashbin
        post :empty_trash
     end
  end

用户控制器:

  def show
    @user = User.find(params[:id])    
  end
泽维尔

根据我的经验,我发现最简单的方法是使用friendly_id gem。to_param您可以设置ActiveRecord中的一种方法来定义模型的路由ID,但是如果您要使用的属性还不是URL友好的话,它将变得非常复杂。假设您的用户名不包含空格或其他URL“不友好”字符,则可以执行以下操作:

class User < ActiveRecord::Base
  ...
  def to_param
    username
  end
  ...
end

但是请确保在您的控制器中找到按用户名输入的用户。

class UsersController < ApplicationController
  ...
  def set_user
    @user = User.find_by(username: params[:id])
  end
end

请注意,如果into_param中的值与数据库中的值不完全相同,则再次查找对象将变得更加困难。例如,如果您想用来name.parameterize设置URL,例如/users/john-doe当您的实际名称属性为时John Doe,则必须找到一种方法来一致地“取消参数化”参数。或者,您可以创建一个新的数据库列,其中包含您要在url中创建的属性的唯一参数化字符串(称为“子段”)。这就是为什么我使用friendly_id的原因它可以自动处理您的。

关于将用户路由到/username,您有几种选择:

  • get ':id', to: 'users#show', as: 'show'
  • resources 'users', path: '/'

只要确保将这些路线放在路线文件的末尾即可。这样,如果您尝试通过执行index操作SomeOtherModelsController/some_other_model就不会试图找到用户名为“ some_other_model”的用户。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法更改用户名

来自分类Dev

如何更改用户名

来自分类Dev

更改用户名而不登录

来自分类Dev

在Ubuntu中更改用户名

来自分类Dev

如何更改用户名域

来自分类Dev

更改用户名后,新的用户名不会显示在登录窗口中

来自分类Dev

在MYSQL中更改用户名和密码

来自分类Dev

无法从git更改用户名和密码

来自分类Dev

在Mac上的终端中更改用户名颜色

来自分类Dev

如何在Cygwin上更改用户名

来自分类Dev

如何在Windows 7中更改用户名?

来自分类Dev

尝试更改用户名时,MySQL查询失败

来自分类Dev

更改用户名表格不起作用

来自分类Dev

如何更改用户名并更新会话?

来自分类Dev

呼叫子更改用户名颜色

来自分类Dev

您如何在Manjaro中更改用户名?

来自分类Dev

如何在MediaWiki中更改用户名?

来自分类Dev

如何在 Konsole 中更改用户名颜色

来自分类Dev

如何在 Ubuntu 18.04 中更改用户名?

来自分类Dev

用户在Oauth2中更改用户名时应该怎么办

来自分类Dev

更改用户详细信息时,UNIQUE约束失败的用户名错误

来自分类Dev

Django表单:在不更改用户名的情况下更新用户的属性

来自分类Dev

Django Rest Framework 如何禁止用户更改用户名?

来自分类Dev

更改Git用户名

来自分类Dev

更改用户名而不更改旧的存储库地址?

来自分类Dev

提示弹出框让用户输入用户名的 SQL 命令将值添加到更改用户“用户名”命令

来自分类Dev

修改用户子类中的用户名字段

来自分类Dev

如何安全地更改用户名和主机名?

来自分类Dev

如何安全地更改用户名和主机名?