2

现在,我的网址被呈现为

/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 来做吗?

4

1 回答 1

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"

这在您使用参数的操作中:

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

该路由将使访问 URL 像 /worker/fotanus/products/在操作User#show中结束params[:role] = 'worker'params[:username] = 'fotanus'

于 2013-05-03T17:50:22.610 回答