如何隐藏' id'在网址,什么都不显示?

时间:2015-02-02 17:19:24

标签: ruby-on-rails ruby-on-rails-4 routing routes

要访问信息中心,这是网址:http://localhost:3000/dashboards/1 我想隐藏id并在网址中不显示任何内容:http://localhost:3000/dashboards/ 我看到了另一个问题,但所有问题都显示用id代替name。 我怎样才能隐藏id?

2 个答案:

答案 0 :(得分:1)

您只需在routes.rb中定义新路线即可。如果您正在使用resources :dashboards,那么该路径已经定义,并且通常保留为列出所有可用对象的索引。这样的事情应该有效:

get 'dashboards' => 'dashboards#show'

另请注意,如果您需要控制器中的id,则不能再依赖params来获取ID,因为它不再位于url中且可用。您将不得不使用会话。

答案 1 :(得分:1)

将控制器映射为resource而不是resources。在routes.rb文件更改

resources :dashboards

resource :dashboard

这假设您的控制器被称为DashboardsController。如果没有,请传递适当的控制器名称。

resource :dashboard, controller: 'whatever_controller'

您可能还希望仅限制显示操作,除非您有其他操作。

resource :dashboard, only: [:show]

这将创建路线

GET /dashboard

如果你不限制行动,你也会

GET /dashboard/new
POST /dashboard
PATCH /dashboard
DELETE /dashboard