将路由URL从随机的:id更改为Rails中的:username

阿拉普·多尔

我想以某种方式更改我的route.rb文件,以便它更改我的当前网址

 localhost:3000/amitian/1

到localhost:3000 /用户名

我将提供我的routes.rb文件以供参考

  Rails.application.routes.draw do

 devise_for :amitians

 root 'home#index'
 resources :amitians do
 member do
 get :following, :followers
 end
end
 resources :confessions do
member do
    get 'like' , to: 'confessions#upvote'
    get 'dislike' , to: 'confessions#downvote'
    end
    resources :confessioncomments
  end
    resources :relationships, only: [:create, :destroy]

 end
英子

如Gregg所述,您可以使用以下命令更改参数的名称:

resources :amitians, param: :username

但实际上,您只是在重命名变量。在控制器操作amitians#show中确定是否需要ID或用户名:

@amitian = Amitian.find(param[:id]) # Treat :id as id
@amitian = Amitian.find_by_username(param[:id]) # Treat :id as username

现在,如果要专门路由到/:username而不是/amitians/:username,则必须覆盖该资源路由:

resources :amitians, except: [:show] do
  member do
    get :following, :followers
  end
end
get '/:username', to: 'amitians#show'

但是,我建议不要这样做。当用户直接输入错误的URL并获取用户页面而不是404错误时,直接在根目录下设置参数会给您造成很多混乱。甚至更糟的是,如果用户选择用户名“登录”或“注册”怎么办?您的注册页面将无法访问,或者该用户页面将无法访问。

我还要指出的是,导轨方便的方法,如resourcesAmitian.findurl_for @amitianlink_to @amitian等所有使用它使用数字ID的REST标准。

如果要使用用户名而不是ID,则除了路由文件之外,还必须停止依赖这些方法并更改控制器和视图。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Rails 5 如何将 url 从 company/:id/jobs/:id 更改为 jobs/:id

Rails 6 - 将 URL 中 root_path 的参数更改为 SEO 友好 URL

将应用程序更改为多语言应用程序时,Rails中的路由失败

Rails将主ID更改为64位bigint

Rails 4.1 AngularJS将URL从问号更改为斜杠

将博客的路由字符串 url 从 controller/action/{*Url} 更改为 {*Url}

如何将 ID 更改为 url slug

rails4将默认URL xxx.com/new_page更改为xxx.com/new_page/username

将图像路由更改为外部链接

将Rails中的列更改为唯一

将URL中的问号和变量(?id = 5)更改为asp.net MVC 4中的斜杠(/ 5)

如何将id更改为对象中的值

如何将_id从ObjectID更改为Mongoose中的Number

URL 路径中的反斜杠将路径更改为 public

将读取路径从 url 更改为 Python 中的本地文件

通过别名导航到路由器时,如何将URL更改为路径?

猫鼬将_id更改为ID

如何将目录中的文件名更改为随机生成的名称?

从字符向量中随机获取时,矩阵将所有值更改为字符

将标识符行名称更改为Fasta文件中的随机缩写名称

如何在单击时将 HTML 中按钮的文本颜色更改为随机颜色?

将 asp.net core 3.1 中的身份路由从 Identity/Account/Register 更改为 /Register

将curl更改为httparty Rails

使用 Python OS 将目录更改为“C:\Users\<username>”

url 中的角度路由更改

所有组件ID更改为随机数

将主键更改为新的id列

如何将id更改为uuid?

将getElement从Id更改为Tag(正文)