创建动态 URL 和路由

Thi*_*elo 0 ruby-on-rails

我分页了一些客户资料,我希望他们的资料页面 URL 是他们的名字。

例如,一个叫 John Doe 的人会有一个个人资料:

mydomain.com/profiles/johndoe
Run Code Online (Sandbox Code Playgroud)

如果有更多的 John Doe,那么我想让:

mydomain.com/profiles/johndoe1

mydomain.com/profiles/johndoe2
Run Code Online (Sandbox Code Playgroud)

我在这里阅读了有关动态路线的信息

Rails 从外到内路由

但我不知道该怎么做。

谢谢你。

JTG*_*JTG 5

使用 url 中的通配符,您可以完成您的任务。输入config/routes.rb

get '/profiles/:username', to: 'controller_name#action_name'
Run Code Online (Sandbox Code Playgroud)

现在params[:username]等于第一个示例中的“johndoe1”和第二个 url 示例中的“johndoe2”。所以你可以在你的控制器中,把

def show
  @user = User.find_by_username(params[:username])
end
Run Code Online (Sandbox Code Playgroud)

它将根据用户名使用数据库记录填充@user。

注意:显然,我对您的设置做了一些相当大的假设,因此您将不得不根据自己的个人情况在这里和那里进行调整,但这应该会给您一个总体思路。