在rails中制作漂亮的网址。将/ users /更改为数据库字段

时间:2013-05-03 17:37:13

标签: ruby-on-rails ruby-on-rails-3 rails-routing

现在,我的网址正在呈现为

/users/2/products

我知道我可以使用friendly_id将其渲染为

/users/username/products

但我不想那样。在我的数据库User中,有一个字段role,其条目包括 - workerjanitor等。所以,我想要

/users/2/products

作为

/worker/username/products or /janitor/username/products and so on..

我该怎么做?我可以使用friendly_id来做吗?

1 个答案:

答案 0 :(得分:5)

我不知道friendly_id。我甚至无法确定你在问什么,但有些东西告诉我你要定义一条自定义路线。

添加自定义路线

在您的路线文件中

,您可以添加

match "/worker/:username/products" => "users#show"

并在操作中检查:username参数变量。

if params[:username]
  @user = User.find_by_name(params[:username])
else
  @user = User.find(params[:id])
end

您特定案例的路线

在你的情况下,你似乎想在你的route.rb中找到它:

match "/:role/:username/products" => "users#show"

这是你使用params的行动:

User.where("role = '?' and username = '?', pararms[:role], params[:username]) 

此路线将使/worker/fotanus/products/User#show访问params[:role] = 'worker'之类的网址。